0 准备
目前官方只支持linux系统进行编译,官方建议使用ubuntu,本文使用ubuntu22 LTS。
编译需要安装下面的工具
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
官网参考:source.android.google.cn/docs/setup/…
使用wsl注意事项
如果你在wsl2里面编译AOSP,一定要记得先把文件夹设置为区分大小写的,修改命令如下,需要管理员运行powershell执行
fsutil file SetCaseSensitiveInfo D:\xxxx\AOSP enable
否则等几十个G的代码下载好之后,会出现下面的情况
万一像我一样代码下载好了却因为大小写问题无法编译,可以新建一个文件夹并设置为大小写敏感,然后把之前的代码复制过来,必须要复制才能继承文件夹的大小写敏感标记。
之后可以设置一下wsl的内存,我这里默认是机器的一半(机器32g),编译时会提示内存不够。新建一个文件c:\user\<username>\.wslconfig,写入下面的内容
[wsl2]
memory=32GB
之后重启wsl
wsl --shutdown
注:不建议用wsl,用vmware虚拟机快很多,wsl有些操作要卡很久,应该不是性能问题,没搞懂为什么。
1 安装repo
ubuntu可以直接apt install repo
不用代理的话,建议看下清华源的说明,在~/.bashrc里面添加环境变量
mirrors.tuna.tsinghua.edu.cn/help/git-re…
2 初始化
确认repo正常后,自己建个文件夹,进去执行下面指令初始化仓库
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-12.0.0_r34
其中的android-12.0.0_r34需要根据自己的手机型号来选择,否则会出现驱动不支持,某些功能不能使用的情况,手机型号对应的安卓源码版本号见:source.android.com/docs/setup/…
在页面上搜索机型,如pixel 3,第二列就是源码版本号
3 下载代码
repo sync -j4
按照清华源官方文档的说明,建议用4并发
mirrors.tuna.tsinghua.edu.cn/help/AOSP/
4 安装对应驱动
谷歌官方驱动地址:
developers.google.cn/android/dri…
在第二节初始化的时候,记住源码版本号前面的SP1A.210812.016.C2
搜索对应的驱动,下载下来解压到AOSP根目录并直接执行
5 开始编译
//设置环境
source build/envsetup.sh
//每次编译前建议先执行这个清除历史编译残留数据
make clobber
//选择构建版本
lunch
//开始编译,会按照你cpu的核心数自动选择并发数,也可以-j设置
m
其中选择构建版本时,会出现一个版本列表,如下图
前缀一般选自己手机型号,比如aosp_blueline。后缀分为eng, userdebug, user, 可以自行搜索区别,前两个都自带root,eng去掉了一些优化操作,输出数据更多,但是性能会差点,所以我这里选userdebug够用。
6 刷机
编译完成后,设置输出目录的环境变量
export ANDROID_PRODUCT_OUT=/xxx/xxx/AOSP/out/target/product/blueline
AOSP是源代码根目录,最后的blueline是手机型号,根据实际情况自己改
之后连上手机,执行下面命令,adb和fastboot命令在ubuntu里面可以直接apt安装
adb reboot bootloader //进入bootloader
fastboot flashall -w //开始刷入镜像,-w是清除所有数据
-w指令按理说可以不加,但是我不加刷完之后,手机开机是黑屏(只有屏幕黑的,adb都能正常连接),之后加上-w再次刷了一次,就正常了。