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.cpp

FAILED:
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.h

BISON_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.cpp

ninja: 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

剩下的就是编译和耐心等编译结束了。

参考链接:

  1. build aosp on Mac OS 10.13 failed
  2. Mac 10.12 编译 Android 源码
  3. http://blog.csdn.net/zxf20063033/article/details/56296403

推荐阅读更多精彩内容

  • 首先,本文参考了两个文档(自己动手编译Android源码(超详细) 和Ubuntu解决包依赖关系 ),感谢两位作者...
    Gobeike阅读 2,279评论 0 0
  • 对于商品,人们普遍认为它应该是有价格的,获取商品的最好方式,在目前的社会上应该是用钱,所谓的认钱不认人,其实是一种...
    庐陵王阅读 79评论 0 2
  • 手中花,幽香幽香的,栀子花开哼歌曲去、 手中沙,细黄细黄的,随风飘向更远处去、 手中线,鬓白鬓白的,时间走远再不回...
    Cinko阅读 45评论 0 18
  • 你提问、滇海教育帮您解答! 自媒体大家应该不会很陌生吧!现在比较火的:今日头条、微信公众号、微博、百家号等自媒体平...
    文玩收藏集阅读 99评论 0 0