參考:
http://www.itdecent.cn/p/367f0886e62b
https://source.android.com/source/initializing
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
1、環(huán)境相關(guān)
首先保證電腦配置要夠,cpu最好是4核以上的,因?yàn)榫幾g的時(shí)候很耗費(fèi)cpu,如果是4核雙線程的,編譯的時(shí)候可以起16個(gè)線程,make -j16,大大加快編譯速度
其次就是內(nèi)存,最好是16G,如果是在虛擬機(jī)里面編譯的話要開(kāi)始swap分區(qū),大小要超過(guò)16G
最后就是硬盤,如果只編譯一個(gè)版本的話150G是要得,多版本就200G+了。
2、編譯環(huán)境配置
java配置
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
如果裝有多個(gè)版本的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
初始化倉(cāng)庫(kù):
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
如果提示無(wú)法連接到 gerrit.googlesource.com,請(qǐng)參照git-repo的幫助頁(yè)面的更新一節(jié)。
如果需要某個(gè)特定的 Android 版本(列表):
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.0.1_r1
同步源碼樹(shù)(以后只需執(zhí)行這條命令來(lái)同步):
repo sync
4、編譯源碼
初始化編譯環(huán)境
source build/envsetup.sh
選擇編譯目標(biāo)
lunch aosp_arm64-eng
開(kāi)始編譯
make -j16
運(yùn)行模擬器
emulator
5、問(wèn)題
內(nèi)存不足
在編譯命令之前,修改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"