编译环境搭建
1.创建磁盘
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 300g ~/android.dmg
创建一个叫~/android.dmg的挂载磁盘 大小建议300G,因为我编译最新的android11系统 花去了249G的空间
如果需要修改磁盘则 使用该命令操作
hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
2.挂载磁盘
hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android
选择挂载对应的磁盘和挂载点,选择Volumes下的android文件夹
如果需要卸载已挂载磁盘则,使用前请确保磁盘已完整无占用
hdiutil detach /Volumes/android
3.安装需要的依赖包
- 安装Xcode命令行
xcode-select --install
通过 macports.org 安装 MacPorts。
安装完后将该环境变量添加到对应的profile文件 zsh对应 ~/.zshrc , bash对应 ~/.bash_profile
export PATH=/opt/local/bin:$PATH
安装gmake, libsdl, git, gnupg, bison
POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg bison
4.设置文件描述符上限制
ulimit -S -n 4096
建议设置大一些,取决于 后续使用的make -jx对应的核心数,核心数越大同时打开的文件越多,设置小了很容易就超出了对应的大小
5.ccache
可参考 https://source.android.com/source/initializing?hl=zh-cn#ccache
我没有设置,编译也是一次通过
下载源代码
1.创建工作目录
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
2.安装repo启动器
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
3.初始化repo
repo init -u https://android.googlesource.com/platform/manifest
我使用的是google自己的源码地址,可以改成国内的源码镜像站
如需要选择对应的编译分支
repo init -u https://android.googlesource.com/platform/manifest -b <branch what you need>
可进入网站https://android.googlesource.com/platform/manifest/+refs查看对应的branch列表 选择对应的b ranch
4.在工作目录下同步代码
repo sync -c -j8
-c指定当前分支 -j8 指定线程
不出问题很快代码就同步完成了
编译源代码
1.脚本初始化环境
source build/envsetup.sh
2.选择编译平台
lunch
选择对应的平台,比如x86-64位的就选择对应的平台
3.开始编译
make -j8
-jx 对应开启核心进行编译,编译完成会提示该信息
#### build completed successfully (23:29:05 (hh:mm:ss)) ####
如果有报错参考官方文档进行排错
运行
emulator
假如报错
emulator: ERROR: Can't find 'Linux version ' string in kernel image file: /Volumes/android/WORKING_DIRECTORY/out/target/product/generic_x86_64/kernel-ranchu
请检查emulator 目录
which emulator
假设是prebuild内的emulator 替换成 android studio 内的emulator 运行
参考文献
评论区