Android Source code 下載和編譯

開始前準備

一臺電腦,裝有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,在restartjack-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
    最後就等着編譯完成吧。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章