2021春节期间,清理硬盘,顺便把代码目录整理了一遍,手头有个pixel5,重温了一遍AOSP编译过程
1. ubuntu编译前要安装依赖包,先在命令行里切换安装镜像源为阿里源,16.04和18.04是不同的,具体按baidu搜索的教程。注意,在ubuntu图形化界面里切换,在ssh远程命令行敲apt install是不行的,必须全部在命令行操作
2. 下载代码,最方便的当然是下载清华镜像中的aosp-latest.tar,然后执行以下命令:
tar -xvf aosp-latest.tar
cd aosp
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_rxxxx
repo sync -c -j8
2021.12.01刷新,android12的aosp-latest.tar压缩包已经100多G了,下载压缩包这个步骤已经没有必要了,直接repo init即可,国内镜像速度不慢。
上述步骤中的rxxxx,根据准备烧录的pixel设备的版本号定,具体参考版本号与branch对应关系
代号、标记和 Build 号 | Android 开源项目 | Android Open Source Project
2021.12.01刷新,编译后的二进制不全,会有怪异问题(例如wifi无法打开),所以必须先下载对应版本的factory image,再编译,再用fastboot flashall -w刷写自编译镜像
factory镜像下载地址:https://developers.google.com/android/images
3. pixel之后的设备,需要额外下载vendor驱动,有两个包,分别由google和qualcomm提供,具体参考如下地址,同样,需要保证版本号对应
https://developers.google.com/android/drivers
4. 解压驱动
tar xvfz google_devices-xxxxx-pq2a.190205.002-a5b43ffa.tgz
extract-google_devices-xxxxx.sh
tar xvfz qcom-xxxxx-pq2a.190205.002-d5cc3341.tgz
extract-qcom-xxxxx.sh
2021.12.01刷新,执行上述命令后有的时候会出现vendor目录无权限
chmod -R 777 vendor,确保最终编译出来的bootloader.img,radio.img, vendor.img 三个文件有权限读写
5. 编译
2021.12.01刷新,注意,如果要调试fwk代码,需要编译no dex的版本
具体方法:
1)build\make\core\board_config.mk
WITH_DEXPREOPT := true 改为 WITH_DEXPREOPT := false
2)build\make\core\dex_preopt_config.mk
注释掉 :##$(call pretty-error, DEXPREOPT must be enabled for user and userdebug builds)
source build/envsetup.sh
lunch xxxxx
make -j8
编译前,确保内存大于16G,硬盘大于400G。单说硬盘,从esxi的吞吐量看,普通3.5硬盘应该也可以,实际测试nvme的ssd与普通硬盘,编译时间差别小于20%
5. 关于GMS
如果需要gms app,可以参考opengms github的说明,下载app再编译,简单点的办法是push如下文件到手机中,就有google play了,再安装apk就随意了,在AOSP 11 r28到AOSP 12 r10之间的版本验证通过,在pixel5上工作正常,但会有play protect问题,需要上google网站添加deviceid,具体参考:How to fix "Device is not Play Protect certified" error - Technobaboy.com
下载链接和脚本 》》》》 下载