st.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-admin kill-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这个文件夹删除,下载一个新的:
wget https://android.googlesource.com/platform/external/bison/+archive/c0c852bd6fe462b148475476d9124fd740eba160.tar.gz
解压后进入bison文件夹,执行:
# mm
# cp out/host/darwin-x86/bin/bison prebuilts/misc/darwin-x86/bison/
结束
最后一切顺利的话,经过漫长的编译后,最终会出现以下画面则说明编译Android系统成功了。