MacOS 10.13.3 Android源码编译发生的那些事儿

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的,建议两个都执行一下

第二个问题:找不到对应的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

  • 解决方法,来自这里

    1. cd /Volumes/AOSP/external/bison
    2. git cherry-pick c0c852bd6fe462b148475476d9124fd740eba160
    3. mm
      用新生成的bison替换掉原bison文件
    4. cp /Volumes/AOSP/out/host/darwin-x86/bin/bison /Volumes/AOSP/prebuilts/misc/darwin-x86/bison/
      编译
    5. 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
  • 解决方案:

    用本文提到的方案解决。

猜你喜欢

转载自blog.csdn.net/qq_25333681/article/details/79838325