mac 10.13 编译 Android源码
编译环境:
mac os 10.13 xcode:Version 9.2 (9C40b)
jdk:1.8.0_151
源码版本:android-8.1.0_r1
官方教程https://source.android.com/setup/initializing,具体可以百度一下,教程很多多,下载源我用清华的。
编译过程中我碰到4个问题,前两个的解决方案详细可以看这里Mac 10.12 编译 Android 源码
第一个问题是找不到对应的MacOSX.sdk,比如找不到MacOSX10.12.sdk,你需要到 https://github.com/phracker/MacOSX-SDKs/releases 下载需要的版本,我这里下载的是MacOSX10.12.sdk,解压复制到如下目录
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
第二个是找不到jdk,这个在根目录的.bash_profile文件中添加
export ANDROID_JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
接下来会碰到第三个问题,log如下如下,可能每个人显示的都不一样的,注意看是否有external/bison/这些log。
[ 3% 2279/59686] yacc
out/soong/.inte.../system/tools/aidl/aidl_language_y.cppFAILED:
out/soong/.intermediates/system/tools/aidl/libaidl-common/darwin_x8664static/gen/yacc/system/tools/aidl/aidl_language_y.cpp
out/soong/.intermediates/system/tools/aidl/libaidl-common/darwin_x8664static/gen/yacc/system/tools/aidl/aidl_language_y.hBISON_PKGDATADIR=external/bison/data
prebuilts/misc/darwin-x86/bison/bison -d
--defines=out/soong/.intermediates/system/tools/aidl/libaidl-common/darwin_x8664static/gen/yacc/system/tools/aidl/aidl_language_y.h
-o out/soong/.intermediates/system/tools/aidl/libaidl-common/darwin_x8664static/gen/yacc/system/tools/aidl/aidl_language_y.cpp
system/tools/aidl/aidl_language_y.yy[ 3% 2282/59686] lex
out/soong/.inter.../system/tools/aidl/aidl_language_l.cppninja: build stopped: subcommand failed.
14:03:54 ninja failed with: exit status 1
make: *** [run_soong_ui] Error 1
关于这个问题一直没有找到解决办法,直到这个讨论build aosp on Mac OS 10.13 failed有更新,🙏🙏🙏。
解决方案如下:
Patch [bison fix](https://android-review.googlesource.com/c/platform/external/bison/+/517740) for High Sierra and build bison:
1. cd /Volumes/AOSP/external/bison
2. git cherry-pick c0c852bd6fe462b148475476d9124fd740eba160
3. mm
Replace prebuilt bison binary with patched binary
1. cp /Volumes/AOSP/out/host/darwin-x86/bin/bison /Volumes/AOSP/prebuilts/misc/darwin-x86/bison/
Build
1. make -j4
如果mm命令无法执行,需要回去执行以下命令
1. source build/envsetup.sh
2. lunch 之后回到external/bison目录
3. mm
第四个问题是Try increasing heap size with java option
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation
-Xmx4g"./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
剩下的就是编译和耐心等编译结束了。
参考链接: