编译环境#
- 系统 Hackintosh macOS High Seirra 10.13.5
- 处理器 Intel Core I7-4702MQ 2.2 GHz
- 内存 12 GB 1600 MHz DDR3L
- 硬盘 影驰 480 GB SATA
构建源码#
- 创建支持区分大小写的 APFS 镜像文件,建议不小于 150G,我这里是300G
1
| sudo hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 300g ~/Android.dmg
|
1
| sudo hdiutil attach ~/Android.dmg -mountpoint ~/Android
|
安装 Xcode 等依赖工具#
1
| sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
|
1
| sudo xcodebuild -license
|
1
| POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| export PATH="$(brew --prefix coreutils)/libexec/gnubin:/usr/local/bin:$PATH"
brew install coreutils
brew install gnu-tar --with-default-names
brew install binutils
brew install diffutils
brew install ed --default-names
brew install findutils --with-default-names
brew install gawk
brew install gnu-indent --with-default-names
brew install gnu-sed --with-default-names
brew install gnu-which --with-default-names
brew install gnutls
brew install grep --with-default-names
brew install gzip
brew install screen
brew install watch
brew install wdiff --with-gettext
brew install wget
|
我的 PATH 变量为:
/usr/local/opt/coreutils/libexec/gnubin:/opt/local/bin:/Users/bavelee/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
1
2
| brew tap AdoptOpenJDK/openjdk
brew install adoptopenjdk-openjdk8
|
- 安装 repo 和同步源码这里就不再赘述了,提供一下 repo 命令
1
| time repo sync --no-clone-bundle --no-tags -j16
|
macOS 编译都会遇到的问题#
- 不兼容 macOS High Sierra 10.13 SDK
1
2
3
4
5
6
7
8
9
10
11
12
| 修改 build/soong/cc/config/x86_darwin_host.go
增加 "10.13",
你没有看错,数组最后面元素还有一个逗号
darwinSupportedSdkVersions = []string{
"10.8",
"10.9",
"10.10",
"10.11",
"10.12",
"10.13",
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| 编译过程突然中断,报错信息可以看到
BISON_PKGDATADIR=external/bison/data prebuilts/misc/darwin-x86/bison/bison -d --defines=/Users/bavelee/Android/HavocOS/out/soong/.intermediates/frameworks/compile/mclinker/lib/Script/libmcldScript/darwin_x86_64_static/gen/yacc/frameworks/compile/mclinker/lib/Script/ScriptParser.h -o /Users/bavelee/Android/HavocOS/out/soong/.intermediates/frameworks/compile/mclinker/lib/Script/libmcldScript/darwin_x86_64_static/gen/yacc/frameworks/compile/mclinker/lib/Script/ScriptParser.cpp frameworks/compile/mclinker/lib/Script/ScriptParser.yy
就是有 bison 字眼,后面的错误信息不用管
需要重新编译 bison
cd external/bison
git cherry-pick c0c852bd6fe462b148475476d9124fd740eba160
如果你 cherry-pick bad object,不用怕
cd .. && rm -r bison
git clone https://android.googlesource.com/platform/external/bison
cd bison && git cherry-pick c0c852bd6fe462b148475476d9124fd740eba160
croot
time mka bison -j32
cp -f ./out/host/darwin-x86/obj/EXECUTABLES/bison_intermediates/bison ./prebuilts/misc/darwin-x86/bison/bison
|
1
2
3
4
| . build/envsetup.sh
lunch aosp_<code_name>-<build_variant>
breakfast <code_name>
time mka bacon -j32 | tee -a build.log
|
参考文章#
mac android 8.0