当前位置:首页 > android源码的下载和编译方法
第二步:建立一个Linux的编译环境
在虚拟机中安装Ubuntu以后, 接下来安装JDK,一般ubuntu安装好后自带有openJDK,这里我们需要使用的是Sun公司的JDK,但是Sun JDK不再ubuntu的软件源里面,为了下载到它,需要增加一个软件源地址,
对于到底用JDK5还是用JDK6呢?官方有做解释的,JDK6适合于编译Gingerbread (姜饼)或者更新的版本,就是2.3或者2.3以上的版本吧,对于2.2或者更低版本的,推荐用JDK5 ,这里我们编译4.0的,当然就用JDK6了.
安装JDK6, 在终端中运行下面三句:
$ sudo add-apt-repository \$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
产生的错误:
E: Package 'sun-java6-jdk' has no installation candidate 解决方法: 1. sudogedit
2. 打开 /ect/apt/sources.list 3. 添加一行 deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse4. 保存关闭gedit或是直
接vi sources.list然后添加deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse4 5. 运行sudo apt-get update
6.再运行sudo apt-get install sun-java6-jdk
根据提示,一步一步地安装,记得安装的时候,会在终端中出来一个提示框,类似于许可协议的,下面有个确定,但就是点不上,按一下Tab键就选中了,直接确定就会安装,这样就安装好了JDK,可以在终端中测试一下,运行 $java -version
java version \
接下来,如果是32位系统的话,在终端中运行
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \\ zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \\
libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \\ libxml2-utilsxsltproc
如果是64位,运行
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \\ zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \\ x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \\
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \\ libxml2-utilsxsltproc
官方推荐用64位的,我当时没看到,用32位也不会有太大的问题,执行到这步,就已经安装好了Git和Python,除了JDK,这两个也是必须的。下面就要准备下载源码了…
第三步:准备下载Android源代码
接下来需要安装、初始化和配置Repo工具 1. 安装Repo
首先确保在你的home目录下面有一个bin目录,如果没有的话,执行下面命令: $ mkdir ~/bin
$ PATH=~/bin:$PATH
然后下载Repo脚本并确保它能够执行
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmoda+x ~/bin/repo
2. 初始化配置Repo客户端
首先创建一个空目录用来保存工作文件 $ mkdir WORKING_DIRECTORY $ cd WORKING_DIRECTORY 然后初始化Repo
$ repoinit -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
第四步:开始下载Androd源文件 $ repo sync
网络断开之后可以重新执行repo sync继续下载. 下载之后的源码大小大概是11G左右,其中android4.0源码大概是4.7G,其他的是.repo文件.
第五步:编译android源码
Ubuntu11.10自带的gcc与g++版本为4.6, 首先使用gcc–v, 或是g++ -v, 查看版本号, 如果版本号是4.6则可能导致编译出错, 这时需要把版本号换成较低的4.4, 本人使用4.5同样编译通过;
以下是网上找到的4.6换成4.4版本的方法:
ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。
$sudo apt-get install gcc-4.4 $sudo apt-get install g++-4.4 装完后进入到/usr/bin目录下 $ls -l gcc* 会显示以下结果
lrwxrwxrwx 1 root root 7 2011-10-29 09:11 gcc -> gcc-4.6 -rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4 -rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6 发现gcc链接到gcc-4.6, 需要将它改为链接到gcc-4.4,方法如下: $sudo mv gccgcc.bak $sudoln -s gcc-4.4 gcc 同理,对g++也做同样的修改: $ls -l g++*
lrwxrwxrwx 1 root root 7 2011-08-14 15:17 g++ -> g++-4.6 -rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4 -rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6 需要将g++链接改为g++-4.4: $sudo mv g++ g++.bak $sudoln -s g++-4.4 g++ 再查看gcc和g++版本号: gcc -v g++ -v
均显示gcc version 4.4.6 ,说明gcc 4.4安装成功。
cd 进入到源码目录/media/androiddisk/android4, 执行; $source build/envsetup.sh $lunch full-eng $make
等待..... 编译时长大概了4~6个小时
编译完成后,可以在源码目录的out/target/product/generic/目录下看到编译好的
ramdisk.img、system.img和userdata.img.
在这之后, 如果只编译某个module则;
cd 进入到源码目录/media/androiddisk/android4(android4.0的工程目录), 执行; $source build/envsetup.sh $lunch full-eng
cd 进入到某个模块目录, 执行mm即可;
PS: 进入ubuntu系统, 在Application->Accessories->Terminal终端窗口运行一下命令,增加SWAP空间
$ sudodd if=/dev/zero of=/boot/swapfilebs=1024 count=512K $ sudomkswap /boot/swapfile $ sudoswapon /boot/swapfile $ swapon -s
共分享92篇相关文档