MAC编译成功AOSP,并刷机成功
1. 环境变量设置
- git
- python3
安装完git和python3之后,获取代码,切换到清华源
cd ~
mkdir bin/; cd bin/
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
export PATH=$PATH:~/bin/
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
2. 创建分区并挂载
MacOS X默认的文件系统是不区分大小写的,因此需要创建能区分大小写的卷,然后挂载:
进入某个磁盘目录如:
cd ~/aosp
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 300g android.img
hdiutil attach android.img.sparseimage -mountpoint android/
cd android
执行以上命令,自动在~/aosp目录下创建了一个android文件夹,这代表一个分区。若电脑重启,进入aosp目录下,则只会在该目录下看到android.img.sparseimage这个文件,使用命令ls -al也无法找到之前创建的android文件夹。这是因为android已经作为一个分区存在,需要重新attach才会出现,即执行如下命令即可看到android文件夹。
hdiutil attach android.img.sparseimage -mountpoint android/
3. 同步代码
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-12.0.0_r34
repo sync
注意:
-b 表示是哪个分支。这里我的手机是Pixel3 XL,所以选择android-12.0.0_r34分支。那如何查看你的手机需要哪个分支,则可以通过source.android.google.cn/docs/setup/… 这个链接去找。
这个链接还还可以根据Android系统版本与机型确定Build ID,确定了Build ID才能找到对应的驱动下载。
4. 驱动下载
因为是要真机运行,所以要下载驱动。如果说运行虚拟机的话,这个步骤可以跳过 根据Android系统版本与机型确定build ID
| Build ID | Tag | Version | Supported devices | 安全补丁级别 |
|---|---|---|---|---|
| SP1A.210812.016.C2 | android-12.0.0_r34 | Android12 | Pixel 3、Pixel 3 XL | 2021-10-05 |
根据Build ID在下面的网址中找到对应的驱动 developers.google.com/android/dri… 比如我的Pixel 3 XL binaries for Android 12.0.0 (SP1A.210812.016.C2)
| Hardware Component | Company | Download | SHA-256 Checksum |
|---|---|---|---|
| Vendor image | Link | 800d1e7195f096798884ccada37f0ff2ee2a991833f75a8ff5cd63632ffd2e57 | |
| GPS, Audio, Camera, Gestures, Graphics, DRM, Video, Sensors | Qualcomm | Link | f0ab49d876427109cd23a03bf86cdfa515466394150a129b6f6fb208264e3bf8 |
5. 生成vendor文件夹
从上面的两个link,下载两个脚本,将其剪切到aosp的源码目录下,然后解压执行。
执行过程中需要同意协议,到最后,要手动输入“I ACCEPT”, 如果手快了一直回车,最后默认就是不同意,这个地方真的是很狗啊,搞了好几次。 两个脚本结束后,会生成vendor文件夹。
6. 源码编译
- 初始化编译环境
$ source build/envsetup.sh
$ make clobber
build/soong/cc/config/x86_darwin_host.go文件需要做如下修改:
- lunch执行实例 根据如下地址查看需要执行的实例 source.android.google.cn/docs/setup/… |设备|代号|build 配置| |----|----|----| |Pixel 3 XL|crosshatch|aosp_crosshatch-userdebug|
#基于pixel3 XL编译则选择aosp_crosshatch-userdebug
#如果是虚拟机可以选择aosp_x86_64-eng
$ lunch
#或也可以直接选择
$ lunch aosp_crosshatch-userdebug
#或也可以直接选择序号
- 开始编译
#根据 cpu 的核数来,核数越多编译越快
make -j8
最后编译成功之后,刷机的镜像文件在out/target/product/ 目录
7. 刷机
前提: 手机已经解BL锁(限制用户刷第三方ROM和第三方recovery以及限制root的“锁”)
adb reboot bootloader
fastboot flashall -w
若你不小心关闭了终端,或者重新开了一个终端,然后执行上述命令刷机,则会出现找不到镜像文件的错误,那是因为没有设置环境的原因,需要添加如下环境变量。
export ANDROID_PRODUCT_OUT='out/target/product/你自己的目录'