4 Android源代码下载与编译

TIP1linaro提供的android源代码是包含ubootLinux kernelandroid源码的,一次下载即可用。

TIP2:从http://releases.linaro.org/12.10/android/leb-panda/下载到的Linux kernelandroid源码版本分布是kernel 3.2android 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编译源代码。

运行脚本即可完成代码下载与编译。(注:此过程也包括自动编译ubootLinux 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

更多相关文章

  1. 源码解析Android中AsyncTask的工作原理
  2. 直播源码Android实现 曲线路径动画
  3. android 源码编译同步的小问题
  4. android 自动更新apk版本
  5. android源码在线查看
  6. Android 图片倒影效果源码
  7. android视频播放器源码分析
  8. 修改android 系统设置 android 版本

随机推荐

  1. Android Handler 异步消息处理机制的妙用
  2. Android商城购物车页面实现和逻辑实现
  3. android艺术开发探索之RemoteViews跨进程
  4. 基于Android平台的Web服务技术研究
  5. android之wifi开发(一)
  6. Android 之6.0 双向通话自动录音
  7. android 文件系统分析
  8. Google Android SDK 2.1正式发布
  9. Android调用WebService之服务端实现(一)
  10. 李开复解读Gphone Android和手机联盟