Mac OSX 10.13 编译Android 8.1 源码
记录一下编译源码时候爬的坑~~~
仅为学习Android Framework用,不编译ROM
下载及编译流程参照
https://www.jianshu.com/p/759a6677c946
原文是编译6.0,这里是针对编译8.1进行修改,以及对可能出现的问题进行补充说明
建议先阅读该文章后,再看这里的修改
感谢原作者
环境:
MBP 256G
Mac OSX 10.13
JDK8u151(与此次编译源码无关,用这个版本是因为只有它可以打开Device Monitor)
MacOSX10.13.sdk
下载:
1:网络
我这里是连的Google,100M带宽2-3小时左右
2:磁盘
按照原文配置大小写敏感的镜像
但是要注意:空间分配上面,我这里256GB的磁盘空间不够!!!
一开始分了150GB,完整编译源码时还是报容量不足,后来就只编了Framework
如果你是跟我一样的用途,这里分100GB即可。如果需要完整编译,
建议根据自己硬盘空间情况,酌情设置镜像大小(建议越大越好,至少200GB。这个分配以后不会直接占用空间,写入文件后才会增长)
3:开始下载
repo init
改为
repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r15
原文是编译6.0,我这里是8.1,所以就换了个8.1的分支
编译:
原文是10.12的SDK,实测现在(2018/09/23)下载XCode后,会自带10.13的SDK,我们用这个就好,不必下载10.12
原文需要修改mac_version.mk,然而8.1的源码里并没有这个文件,无需处理
lunch后,选择版本,原文是编译ROM到手机上刷机用,这里只需要选择x86-x64就好
如果需要全部编译,在根目录下执行
make
如果你只需要Framework,在根目录下执行
make framework
4:如果一切顺利的话,这时候按照原文来处理就结束了
5:然而,顺利是不可能顺利的,这辈子都不可能顺利的
6:遇到的问题(划重点)
这里的问题基本是必定会报,可以提前修好再去编译
(1):Could not find a supported mac sdk: ["10.10" "10.11" "10.12"]
默认编译只支持上面写的那几个SDK,然鹅我们用的是10.13,怎么办呢?
vim build/soong/cc/config/x86_darwin_host.go
把10.13加上去
SDK.jpg(2):Could not find jdk tools.jar at /lib/tools.jar, please check if your JDK was installed correctly
首先确保你的JDK环境变量是配置正确的
sudo vim /etc/profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后你会发现,配置正确也并没什么X用
vim build/core/find-jdk-tools-jar.sh
这个脚本里面,Google定义的是ANDROID_JAVA_HOME
惊不惊喜,意不意外?【手动滑稽】
很简单了,要么你再配置一份ANDROID_JAVA_HOME,要么直接把这个脚本改成JAVA_HOME
(3):ninja: build stopped: subcommand failed
原因:
With format string strictness, High Sierra also enforces that %n
isn't used in dynamic format strings, but we should just disable
its use on darwin in general.
修复:cherry-pick一个commit
cd external/bison
git cherry-pick c0c852bd6fe462b148475476d9124fd740eba160
mm
如果还是报错
回到根目录
source build/envsetup.sh
lunch 然后选择对应版本
cd external/bison
mm
回到根目录
cp /Volumes/AOSP/out/host/darwin-x86/bin/bison /Volumes/AOSP/prebuilts/misc/darwin-x86/bison/
(4):ninja: build stopped: subcommand failed / Out of Memory
编译分配的内存不够
cd out/host/darwin-x86
jack-admin stop-server
vim jack-admin
修改487行
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
改为
JACK_SERVER_COMMAND="java -Xmx3g -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
jack-admin start-server
如果报错,先执行
jack-admin install-server
7:编译完成
MBP 2015,i7-4750H + 16G,只编译Framework,花了30分钟左右。
完成后按照原文所说,用idea查看即可
放个和正常Android项目的对比图
可以看到,已经可以打开@hide的API了
参考
网友评论