首先是用git和repo获得代码,这个无须过多解释,按照
http://source.android.com/source/download.html上面说的做就行。
然后是编译,首先,ubuntu 10.0.4上无法通过apt-get获得doc上说的jdk1.5的包,这是因为10.0.4的源已经默认删除了jdk1.5,在实际操作中,个人也认为用jdk1.6编译更为方便,虽然官方文档上没有说明。
当安装完jdk1.6后,修改以下几个文件,external/clearsilver/cgi/Android.mk, external/clearsilver/java-jni/Android.mk, external/clearsilver/util/Android.mk, external/clearsilver/cs/Android.mk.
把脚本中的ifneq改为ifeq可暂时规避问题, 以下是Diff
-----------------------------------------------------------
# This forces a 64-bit build for Java6
!ifneq ($(filter 1.6%,$(java_version)),)
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
endif
------------------------------------------------------------
# This forces a 64-bit build for Java6
!ifeq ($(filter 1.6%,$(java_version)),)
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
endif
然后在<android_root>下敲击make,就可以泡杯咖啡休息或者打几盘植物大战僵尸去(按照机器能力第一次编译时间在3-5个小时之间)。
需要指出的是,网上有人提出ubuntu10.0.4自带的gcc4.4会有编译的问题,并建议降级为4.3,不过本猫没有遇到。
编译完成后,会在out/target/product/generic下生成system.img和userdata.img两个镜像文件(内牛满面),可以被系统加载。
对于编译单一的模块,速度是最重要的,目前可以采用的方法有
1 make <module_name>
2 先用 ". build/envsetup.sh"命令source环境(注意一开始是.),然后用mm <module_path>或者mmm <module_path>来编译。
比如,默认的Contacts程序是不支持拼音排序的,若要支持拼音排序,我们需要修改Contacts,并将生成Contacts.apk替换原系统的apk文件。可以在android项目的根目录运行
1 make Contacts
或者
2 mmm packages/apps/Contacts
个人推荐后者,后者的速度比前者快几倍。