第一:环境准备:
OS系统版本:macOs 10.13
xcode版本:Version 10.0 (10A255)
Jdk版本:1.8.0_151
Python版本:2.7
AOSP源码版本:android-8.1.0_r1
第二:源码下载注意事项:
1.首先建立一个区分大小写的磁盘映像,避免后面Git 相关命令的不知别等等,如果不新建,后面我们就需要去修改一些配置文件了,新建的流程可以参考官网的文档:
https://source.android.google.cn/setup/initializing.html
2.下载AOSP代码,可以使用清华的镜像源:
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
安装好repo之后本人使用的是下载指定版本的命令:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r1
接下来你需要的就是等待了。
第三:AOSP编译:
这里有文章是可以做参考的:
https://www.jianshu.com/p/1513fc9e1a74
https://www.jianshu.com/p/35f840dd7869
问题一:找不到对应的MacOSX.sdk,比如找不到MacOSX10.12.sdk,
Could not find a supported mac sdk: [“10.10” “10.11” “10.12” “10.13”]
只有MacOSX10.14.sdk,你需要到 https://github.com/phracker/MacOSX-SDKs/releases 下载需要的版本,这里不推荐使用MacOSX10.14.sdk进行编译,需要知道的是这个配置文件肯定是Android源码开发者配置的,为什么没有配置10.14呢,因为他没有试过编译,不知道会出现什么问题,对于初学者最好最好不要去尝试,如果是有经验的人员,可以去修改配置文件。
解决①:我这里下载的是MacOSX10.12.sdk,解压复制到如下目录:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
文章作者其实描述的很清楚了,只不过当时还没有搞懂tar.xz文件的解压方式,双击之后直接变成了另外一个文件。哈哈!现在想来真的很笨,需要下载软件/工具/命令来解压的:xz -d 要解压的文件,这里有一篇文章可以看看:https://blog.csdn.net/rheostat/article/details/7614451
解决②:如果需要使用MacOSX10.14.sdk,需要去源码的文件/Volumes/android/build/soong/cc/config/x86_darwin_host.go:修改
darwinSupportedSdkVersions = []string{
"10.10",
"10.11",
"10.12",
"10.14",
问题二:找不到jdk,这个在根目录的.bash_profile文件中添加
export ANDROID_JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
问题三:源码中bison 有问题,需要重新生成拷贝进去
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
解决:这个问题很多人都遇到了,可以去开源社区中看看很多的讨论
https://groups.google.com/forum/#!topic/android-building/D1-c5lZ9Oco
* Patch [bison fix](https://android-review.googlesource.com/c/platform/external/bison/+/517740) for High Sierra and build bison:
* cd /Volumes/android/external/bison
* git cherry-pick c0c852bd6fe462b148475476d9124f<wbr>d740eba160
* cd ../..
* make bison
* Replace prebuilt bison binary with patched binary
* cp /Volumes/android/out/host/darwin-x86/bin/bison /Volumes/android/prebuilts/misc/darwin-x86/bison/
问题四:编译需要的内存不够
Try increasing heap size with java option '-Xmx<size>'.
解决:
①:https://jingyan.baidu.com/article/d45ad148ad1a8469552b8013.html
②:make -j16 改成 make -j8
这个取决于你的cpu是几核的,如果是四核的,就可以使用 make -j16,还是能抗住的,如果是 双核的,最好使用make -j8。