macOS Mojave 10.14.4 下 Android 8.1源码编译详解(2)

下载完成后差不多占用70G大小,因为我们后续不需要再进行分支切换与同步,所以我们可以把目录下的.repo文件夹给删除了,毕竟Mac的SSD容量宝贵,删除之后你会发现硬盘大小没有释放,这就有点尴尬了,这个问题目前也没找到解决的办法,我的方法是按照第一步创建一个新的分区,把内容拷贝进去,然后把旧的分区删了,这样空间就释放了。

编译源码 优化编译环境 设置 ccache

要使用 ccache,请在源代码树的根目录下执行以下命令:

#export USE_CCACHE=1 #export CCACHE_DIR=/<path_of_your_choice>/.ccache #prebuilts/misc/darwin-x86/ccache/ccache -M 50G

注意<path_of_your_choice>是你源码下载的根目录。

最后请将以下内容添加到 .bash_profile(或等同文件)中:

export USE_CCACHE=1 配置ANDROID_Java_HOME环境变量

在~/.bash_profile中添加以下内容,前提必须是安装了JDK1.8:

export ANDROID_JAVA_HOME=$(/usr/libexec/java_home -v1.8) 设置XcodeSDK的版本

执行以下命令,打开配置文件:

# vi build/soong/cc/config/x86_darwin_host.go

查看darwinSupportedSdkVersions,这里列出了支持的sdk版本:

darwinSupportedSdkVersions = []string{ "10.10", "10.11", "10.12", }

接着我们进入以下目录查看现有的XcodeSDK版本:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

这里我们选择10.11的版本,如果没有MacOSX10.11.sdk则去MacOSX-SDKs 中下载一个,解压到该目录,并把其他版本的删除,确保只保留一个就行了。

开始编译

首先要把shell切换到bash(如果你使用的是zsh)

#chsh -s /bin/bash

初始化环境:

#source build/envsetup.sh

选择编译的分支:

#lunch

会出现以下列表:

Lunch menu... pick a combo: 1. aosp_arm-eng 2. aosp_arm64-eng 3. aosp_mips-eng 4. aosp_mips64-eng 5. aosp_x86-eng 6. aosp_x86_64-eng 7. aosp_car_arm-userdebug 8. aosp_car_arm64-userdebug 9. aosp_car_x86-userdebug 10. aosp_car_x86_64-userdebug ......

Which would you like? [aosp_arm-eng]

要求输入对应的数字:
如果你想在你的Nexus上设备运行,请参照选择;
如果你只想在本机的虚拟机上运行,Mac系统的话选择aosp_x86-eng即可。

最后一步,编译:

#make -j6

通过-jN参数来设置编译的并行任务数,以提高编译速度,在此前我的CPU核心数为6,这里N值最好选在6到12之间,这里我们设置6个并行任务进行编译。

这里需要注意的是,每次退出再进入命令行要执行以上命令之前,都要先执行:

#source build/envsetup.sh 编译中遇到的问题 问题1:Jack编译报错:communication error with Jack server

原因:JACK编译器不支持多用户同时编译,其他用户在编译,端口被占用。

解决方法:
如下:修改以下两个配置文件中的端口号server.service.port和server.admin.port,比如都改为8096/8097:

~/.jack-settings

~/.jack-server/config.properties

注意:
两个文件中的端口号必须一致。
修改后的端口号必须是没有被使用的。

问题2: 出现Try increasing heap size with java option '-Xmx'

原因: 出现这个错误是由于电脑内存不足;
解决方法:在命令行分别执行以下三条语句,然后继续编译;

#export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g" # ./prebuilts/sdk/tools/jack-adminkill-server # ./prebuilts/sdk/tools/jack-admin start-server 问题3: BISON_PKGDATADIR=external/bison/data prebuilts/misc/darwin-x86/bison/bison -d

在log中出现BSION等字样;

原因:网上说这个bsion的一个bug;
解决方法:拉取新的分支,重新编译 bison:

#cd external/bison #git cherry-pick c0c852bd6fe462b148475476d9124fd740eba160

如果这步骤发生错误了(比如之前删除了.repo文件夹)
这时候我们就把bison这个文件夹删除,下载一个新的:

wgethttps://android.googlesource.com/platform/external/bison/+archive/c0c852bd6fe462b148475476d9124fd740eba160.tar.gz

解压后进入bison文件夹,执行:

# mm # cp out/host/darwin-x86/bin/bison prebuilts/misc/darwin-x86/bison/ 结束

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11932.html