最近公司在做一个新的Android的项目,需要修改Android的源代码。这就需要自己来搭建一个Linux下的开发环境。
因为之前的Android开发都是Eclipse + SDK,编出APK Package之后,交付客户即可,所以一直没有认真地来做一下Android的编译。这次有机会完整的搞了一下,这里记录一下整个过程,以及自己遇到的一些问题,以备后面查询。
按说现在版本都到3.0了,可是现在主流机型,还是2.2和2.3居多。也许很快大部分机器都升级到3.0甚至更高了,不过换汤不换药,基本的编译流程差别不大。
1. 操作系统和配置
我使用OS是Debian squeeze 版本,没有使用流行的ubuntu,原因很简单,现成的OS,运行也很稳定。CPU是双核的1.8G,硬盘也有几十G的剩余空间。听说4.0编译需要耗费大量资源,恐怕这个机器是没戏了。这个机器还是最好性能好一些,内存越大越好,内核越多越好,响应编译的速度就会有提高。
2. 编译软件的安装
Google android 的官方网站上已经有详细的说明,见网址:http://source.android.com/source/initializing.html .
主要是要安装JDK1.5 (因为是Froyo),python 和 git。要注意的是, python 版本要用2.x的,因为python3.x的语法有变化。
我在安装JDK1.5时遇到了点小麻烦。squeeze版本的默认源里,可能没有JDK1.5的安装包。而google给出的指导中的的方法,因为是ubuntu的源,也不好用。我采用的方法是:修改源/etc/apt/source.list 中的的版本名称squeeze 为 lenny(就是上一个发行版本), 然后就是
sudo aptitude update
sudo aptitude install sun-java5-jdk
安装JDK1.5 。如果以前安装了JDK1.6,一定要把之前的全部remove,包括sun-java6-jdk, sun-java6-jre等。
接着就要安装编译时需要的一些package,我是32位系统,按照指导应该安装以下的package:
$ 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-utils
我在这里就走了一些弯路,因为有些package已经装过,所以最开始的时候没有全部安装,导致编译过程中因为缺少某个package而出错,回头来一个一个安装。所以还是建议全都给装上。
我还遇到一个情况,就是安装的dev的package,比原来安装的版本号要低,我都是强制采用低版本,这样次才能满足编译android代码的需要。
3. 获取源代码
repo init -u https://android.googlesource.com/platform/manifest -b android-2.2.2_r1
各个版本对应的tag名称可以在这里查询:http://source.android.com/source/build-numbers.html .
4. 开始编译代码
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
Installed file list: out/target/product/generic/installed-files.txt