4 Android源代码下载与编译
TIP1:linaro提供的android源代码是包含uboot、Linux kernel和android源码的,一次下载即可用。
TIP2:从http://releases.linaro.org/12.10/android/leb-panda/下载到的Linux kernel和android源码版本分布是kernel 3.2,android 4.1.2。
4.1 准备工作
参考http://blog.csdn.net/luoshengyang/article/details/6559955
4.2 下载源码并编译
首先,直接借用linaro下载编译脚本完成代码下载与编译过程。
从http://releases.linaro.org/12.10/android/leb-panda/下载linaro_android_build_cmds.sh。
linaro_android_build_cmds.sh脚本实现的功能是:
1、 download the repo tool for android下载repo工具。
2、 download the android code下载linaro版本的安卓源代码。
3、 download the toolchain to build with下载交叉工具链。
4、 build the code编译源代码。
运行脚本即可完成代码下载与编译。(注:此过程也包括自动编译uboot和Linux Kernel源码)
参考网址:
https://android-build.linaro.org/builds/~linaro-android/panda-ics-gcc47-omapzoom-stable-blob/
其次,熟悉之后可以参照脚本分步下载与编译。
参照脚本简化的编译方法是:
1、 第一次在服务器中编译时,先把源码clean,避免下载到的源码出现文件冲突等问题
root@fwtdev2:/data/smbshare/richard/source_code/android#make clean
2、 指定文件生成路径与交叉工具链路径
root@fwtdev2:/data/smbshare/richard/source_code/android#export TARGET_PRODUCT=pandaboard
root@fwtdev2:/data/smbshare/richard/source_code/android#exportTARGET_TOOLS_PREFIX=android-toolchain-eabi/bin/arm-linux-androideabi-
3、 运行环境配置脚本
root@fwtdev2:/data/smbshare/richard/source_code/android#./build/envsetup.sh
4、 执行编译命令依次为boot/system/userdata(boot/system/userdata可分开单独执行;-j4表示执行4个线程进行并行编译,速度比较快,也可以去掉)
root@fwtdev2:/data/smbshare/richard/source_code/android#make boottarball #说明:boot编译时最好不要带参数-j4进行编译,容易报错。
root@fwtdev2:/data/smbshare/richard/source_code/android#make –j4 systemtarball #说明:编译不过时可以尝试不带参数-j4进行编译,ubuntu下编译android4.1.2很容易出现编译问题,目前原因还未查明。
root@fwtdev2:/data/smbshare/richard/source_code/android#make –j4 userdatatarball #说明:编译不过时可以尝试不带参数-j4进行编译,ubuntu下编译android4.1.2很容易出现编译问题,目前原因还未查明。
4.3 问题
1、出现的问题:下载android源码的过程中,repo sync出现了error: Exited sync dueto gc errors,原因是git版本较旧,需更新git至>=1.7.2版本
解决方法:在Ubuntu 10.04 LTS解决操作步骤如下:
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git
2、服务器swap过小的问题
会导致有时出现如下打印:
注意:某些输入文件使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用-Xlint:deprecation重新编译。
注意:某些输入文件使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用-Xlint:unchecked重新编译
有时出现直接退出编译的现象,编译错误不稳定。
解决方法:
分析发现Ubuntu服务器SWAP分区只有10G,而最好>16G。
参考网址:http://bbs.189works.com/thread-42793-1-1.html
加大SWAP分区变为20G,
方法:http://www.cnblogs.com/willsun8023/archive/2011/03/19/1988589.html
然后重新执行./linaro_android_build_cmds.sh脚本,编译ok
4.4 生成的映像
./out/target/product/panda/boot.tar.bz2
./out/target/product/panda/userdata.tar.bz2
./out/target/product/panda/system.tar.bz2