参考:
http://www.jianshu.com/p/367f0886e62b
https://source.android.com/source/initializing
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
1、环境相关
首先保证电脑配置要够,cpu最好是4核以上的,因为编译的时候很耗费cpu,如果是4核双线程的,编译的时候可以起16个线程,make -j16,大大加快编译速度
其次就是内存,最好是16G,如果是在虚拟机里面编译的话要开始swap分区,大小要超过16G
最后就是硬盘,如果只编译一个版本的话150G是要得,多版本就200G+了。
2、编译环境配置
java配置
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
如果装有多个版本的java,切换java版本
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javadoc
编译各Android版本需要的java版本如下
Android版本 编译要求的JDK版本
AOSP的Android主线 OpenJDK 8
Android 5.x至android 6.0 OpenJDK 7
Android 2.3.x至Android 4.4.x Oracle JDK 6
Android 1.5至Android 2.2.x Oracle JDK 5
配置编译工具链
$ sudo apt-get install git-core gnupg flex bison gperf build-essential
zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386
lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache
libgl1-mesa-dev libxml2-utils xsltproc unzip
3、源码下载
下载 repo 工具:
mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo > ~/bin/repo
chmod a+x ~/bin/repo
建立工作目录:
mkdir WORKING_DIRECTORYcd WORKING_DIRECTORY
初始化仓库:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
如果提示无法连接到 gerrit.googlesource.com,请参照git-repo的帮助页面的更新一节。
如果需要某个特定的 Android 版本(列表):
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.0.1_r1
同步源码树(以后只需执行这条命令来同步):
repo sync
4、编译源码
初始化编译环境
source build/envsetup.sh
选择编译目标
lunch aosp_arm64-eng
开始编译
make -j16
运行模拟器
emulator
5、问题
内存不足
在编译命令之前,修改prebuilts/sdk/tools/jack-admin文件,找到文件中的这一行:
JACK_SERVER_COMMAND="java -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
然后在该行添加-Xmx4096m,如:
JACK_SERVER_COMMAND="java -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"