假设使用~/android目录存放Android源代码.
$ mkdir ~/android
$ cd ~/android
$ curl -s https://dl-ssl.google.com/dl/googlesource/git-repo/repo > repo
$ chmod a+x repo
$ cd ~/android
$ curl -s https://dl-ssl.google.com/dl/googlesource/git-repo/repo > repo
$ chmod a+x repo
repo
只是用于下载的脚本,然后可以进行真正的初始化:
- AOSP:
$ ./repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
- CM:
$ ./repo init -u git://github.com/CyanogenMod/android.git -b ics
- AOKP:
$ ./repo init -u git://github.com/AOKP/platform_manifest.git -b ics
这时我们得到~/android里的 .repo目录,这里面存放了所有的版本信息
但这时没有源代码,使用下面的命令下载源代码
$ ./repo sync
这会消耗大量的时间,因为需要下载大概4, 5G的版本信息,
安装所依赖的主机端软件环境
# yum install gcc gcc-c++ gperf flex bison glibc-devel.{x86_64,i686} zlib-devel.{x86_64,i686} ncurses-devel.i686 libsx-devel perl-Switch readline-devel.i386 libstdc++.i686 libX11-devel.i686 libXrender.i686 libXrandr.i686
# yum install java-1.6.0-openjdk java-1.6.0-openjdk-devel
# yum install java-1.6.0-openjdk java-1.6.0-openjdk-devel
如果要编译 CM还需要:
# yum install schedtool pngcrush
解决编译问题
- 验证java配置:
# alternatives –config java
- 降级GNU Make
# yum downgrade make –nogpgcheck –releasever=13
- 修改 external/webkit/Source/WebCore/make-hash-tool.pl 脚本
$ curl -s”https://raw.github.com/gist/2841798/c3aba177e4d14e6dbacc5d8321d25850dce61b35/make-hash-tools.pl” >external/webkit/Source/WebCore/make-hash-tool.pl
- 修改 build/core/main.mk 用来支持OpenJDK
删除下面三行,(大概位于 120行左右):ifneq ($(shell java -version 2>&1 | grep -i openjdk),) java_version := endif
配置编译
$ source build/envsetup.sh
$ lunch
$ lunch
如果是编译CM, 需要额外下载 ROM Manager:
$ ./vendor/cyanogen/get-rommanager
编译
$ make otapackage
这时会生成校验过的update.zip文件,位于out/target/product/*/.
$ find out/target/product/* -maxdepth 1 -type f -name”*.zip”
- 可以通过recovery分区进行重烧