MacOS 10.13.3 Android源码编译发生的那些事儿
环境:
系统:macOS High Sierra 10.13.3
编译目标版本:android-8.0.0_r17
java version “1.8.0_161”
源码下载
关于源码下载,网上有大量实例。主要分为国内清华和科大镜像,和Google提供的源码。Goole要翻墙,嫌麻烦,我这边使用的是清华镜像。
我采用的是的是初始化包,如果你也准备采用,建议你直接使用迅雷等下载工具直接下载,比使用wget快得多,还支持断点续传。然后按照步骤逐一操作就行,下面是主要步骤:
wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包(可用迅雷代替)
tar xf aosp-latest.tar
cd AOSP # 解压得到的 AOSP 工程目录
//这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
//或 repo sync -l 仅checkout代码
编译遇到的问题
注意,本文只记录了遇到的问题,不包括完整流程。
注意,本文只记录了遇到的问题,不包括完整流程。
注意,本文只记录了遇到的问题,不包括完整流程。
第一个问题:git 的默认缓存太小,需要更改默认缓存大小:
报错日志:
error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
解决方法:
- 增加http链接的默认缓存大小
git config –global http.postBuffer 1048576000
git config –global https.postBuffer 1048576000
//第一个是增加http访问的缓存大小,第二个是针对https的,建议两个都执行一下- 增加http链接的默认缓存大小
第二个问题:找不到对应的macOS.sdk
报错日志
internal error: Could not find a supported mac sdk: [“10.10” “10.11” “10.12”]
解决方法:
ps: 报错原因是当前系统环境中,只有MacOSX10.13.sdk,但同步源码中需要的sdk版本列表中只有10.10、10.11和10.12。去这个地址,下载编译源码中的其中一个版本,解压然后复制到下目录中即可。
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs另外,下载完sdk版本后,文件格式为.xz,不熟的话,使用一下命令/步骤即可解压。
xz -d *.tar.xz
tar -xvf *.tar
第三个问题:少某个文件
报错日志:
[ 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解决方法,来自这里:
- cd /Volumes/AOSP/external/bison
- git cherry-pick c0c852bd6fe462b148475476d9124fd740eba160
- mm
用新生成的bison替换掉原bison文件 - cp /Volumes/AOSP/out/host/darwin-x86/bin/bison /Volumes/AOSP/prebuilts/misc/darwin-x86/bison/
编译 - make -j4
第四个问题:磁盘空间不足
报错日志
fatal error: error in backend: IO failure on output stream.
解决方案:
自行扩充字盘空间就行。
第五个问题:对第二个问题采用了这里提到的解决方法导致。如果你恰好出现了同样问题,仔细回忆一下,是不是采用了这里的答案。
- 报错日志
2 errors generated. [ 2% 1459/59687] cc
out/soong/.intermediates/external/libchrome/libchrome/darwin_x86_64_static/obj/external/
libchrome/base/trace_event/trace_log.o ninja: build stopped: subcommand failed. 15:07:54
ninja failed with: exit status 1 make: *** [run_soong_ui] Error 1
解决方案:
用本文提到的方案解决。