Android Source code 下載和編譯
阿新 • • 發佈:2019-01-27
開始前準備
一臺電腦,裝有Linux系統(當然你要是非要用windows當我沒說)
使用Ubuntu的同學可以參照這個Android官方的連結
Android Source Code initializing
安裝必要的軟體
sudo apt-get install g++ curl flex libxml2-utils git git-core
當然不能jdk肯定是要安裝的。對於15.10之後的ubuntu,其預設的軟體倉庫中已經包含了jdk8的版本,直接使用命令安裝就好。當然也可以通過如下連結自行下載deb包使用dpkg -i 進行安裝
openjdk-8
重點下載下面這三個deb包就可以啦
- openjdk-8-jre-headless_8u45-b14-1_amd64.deb
- openjdk-8-jre_8u45-b14-1_amd64.deb
- openjdk-8-jdk_8u45-b14-1_amd64.deb w
下載repo檔案
可以通過google官方網站進行下載。
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
不能fan-q的話可以下載這裡的repo檔案
下載原始碼
每次下載android 原始碼的時候,sync git倉庫是最費時費力的。這裡推薦使用清華大學的android aosp源。我們可以先講所有的git倉庫的下載下來。然後進行同步,這樣就快很多。詳情可以參照這裡 Tsinghua AOSP
wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
總共26G的資料,儘可能在晚上下載,避開高峰。下載完成之後當然就是同步啦。
tar xf aosp-latest.tar
cd AOSP # 解壓得到的 AOSP 工程目錄
# 這時 ls 的話什麼也看不到,因為只有一個隱藏的 .repo 目錄
repo sync # 正常同步一遍即可得到完整目錄
# 或 repo sync -l 僅checkout程式碼
編譯
在編譯的過程中遇到了不少問題。
- jdk問題,不要使用甲骨文官方網站的jdk版本。android在編譯的時候要求使用openjdk
- java Xmx size問題(try increasing heap size with java option ‘-xmx’.)。需要修改java Xmx的大小,參照下面的patch修改,主要Xmx2048m。設定完成之後,現將jack server stop,在restart
jack-admin stop-server jack-admin start-server
diff --git a/tools/jack-admin b/tools/jack-admin
index ee193fc..33cb913 100755
--- a/tools/jack-admin
+++ b/tools/jack-admin
@@ -451,7 +451,7 @@ case $COMMAND in
if [ "$RUNNING" = 0 ]; then
echo "Server is already running"
else
- JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
+ JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx2048M -cp $LAUNCHER_JAR $LAUNCHER_NAME"
echo "Launching Jack server" $JACK_SERVER_COMMAND
(
trap "" SIGHUP
- 其他的一些奇葩問題,沒解決。最後嘗試單獨編譯systemimage成功了
Communication error with Jack server (56). Try ‘jack-diagnose’
android ninja: fatal: fork: Cannot allocate memory
最後就等著編譯完成吧。