Mac OSX 10.13 編譯Android 8.1 源碼
記錄一下編譯源碼時候爬的坑~~~
僅為學習Android Framework用史汗,不編譯ROM
下載及編譯流程參照
http://www.reibang.com/p/759a6677c946
原文是編譯6.0,這里是針對編譯8.1進行修改伏嗜,以及對可能出現的問題進行補充說明
建議先閱讀該文章后垮斯,再看這里的修改
感謝原作者
環(huán)境:
MBP 256G
Mac OSX 10.13
JDK8u151(與此次編譯源碼無關草戈,用這個版本是因為只有它可以打開Device Monitor)
MacOSX10.13.sdk
下載:
1:網絡
我這里是連的Google坪创,100M帶寬2-3小時左右
2:磁盤
按照原文配置大小寫敏感的鏡像
但是要注意:空間分配上面炕婶,我這里256GB的磁盤空間不夠!@吃ぁ柠掂!
一開始分了150GB,完整編譯源碼時還是報容量不足依沮,后來就只編了Framework
如果你是跟我一樣的用途涯贞,這里分100GB即可。如果需要完整編譯危喉,
建議根據自己硬盤空間情況宋渔,酌情設置鏡像大小(建議越大越好辜限,至少200GB傻谁。這個分配以后不會直接占用空間,寫入文件后才會增長)
3:開始下載
repo init
改為
repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r15
原文是編譯6.0列粪,我這里是8.1审磁,所以就換了個8.1的分支
編譯:
原文是10.12的SDK,實測現在(2018/09/23)下載XCode后岂座,會自帶10.13的SDK态蒂,我們用這個就好,不必下載10.12
原文需要修改mac_version.mk费什,然而8.1的源碼里并沒有這個文件钾恢,無需處理
lunch后,選擇版本鸳址,原文是編譯ROM到手機上刷機用瘩蚪,這里只需要選擇x86-x64就好
如果需要全部編譯,在根目錄下執(zhí)行
make
如果你只需要Framework稿黍,在根目錄下執(zhí)行
make framework
4:如果一切順利的話疹瘦,這時候按照原文來處理就結束了
5:然而,順利是不可能順利的巡球,這輩子都不可能順利的
6:遇到的問題(劃重點)
這里的問題基本是必定會報言沐,可以提前修好再去編譯
(1):Could not find a supported mac sdk: ["10.10" "10.11" "10.12"]
默認編譯只支持上面寫的那幾個SDK,然鵝我們用的是10.13酣栈,怎么辦呢险胰?
vim build/soong/cc/config/x86_darwin_host.go
把10.13加上去
(2):Could not find jdk tools.jar at /lib/tools.jar, please check if your JDK was installed correctly
首先確保你的JDK環(huán)境變量是配置正確的
sudo vim /etc/profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后你會發(fā)現,配置正確也并沒什么X用
vim build/core/find-jdk-tools-jar.sh
這個腳本里面矿筝,Google定義的是ANDROID_JAVA_HOME
驚不驚喜起便,意不意外?【手動滑稽】
很簡單了窖维,要么你再配置一份ANDROID_JAVA_HOME榆综,要么直接把這個腳本改成JAVA_HOME
(3):ninja: build stopped: subcommand failed
原因:
With format string strictness, High Sierra also enforces that %n
isn't used in dynamic format strings, but we should just disable
its use on darwin in general.
修復:cherry-pick一個commit
cd external/bison
git cherry-pick c0c852bd6fe462b148475476d9124fd740eba160
mm
如果還是報錯
回到根目錄
source build/envsetup.sh
lunch 然后選擇對應版本
cd external/bison
mm
回到根目錄
cp /Volumes/AOSP/out/host/darwin-x86/bin/bison /Volumes/AOSP/prebuilts/misc/darwin-x86/bison/
(4):ninja: build stopped: subcommand failed / Out of Memory
編譯分配的內存不夠
cd out/host/darwin-x86
jack-admin stop-server
vim jack-admin
修改487行
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
改為
JACK_SERVER_COMMAND="java -Xmx3g -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
jack-admin start-server
如果報錯,先執(zhí)行
jack-admin install-server
7:編譯完成
MBP 2015陈辱,i7-4750H + 16G奖年,只編譯Framework,花了30分鐘左右沛贪。
完成后按照原文所說陋守,用idea查看即可
放個和正常Android項目的對比圖
可以看到,已經可以打開@hide的API了
參考