MAC编译成功AOSP,并刷机成功

2,844 阅读1分钟

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 IDTagVersionSupported devices安全补丁级别
SP1A.210812.016.C2android-12.0.0_r34Android12Pixel 3、Pixel 3 XL2021-10-05

根据Build ID在下面的网址中找到对应的驱动 developers.google.com/android/dri… 比如我的Pixel 3 XL binaries for Android 12.0.0 (SP1A.210812.016.C2)

Hardware ComponentCompanyDownloadSHA-256 Checksum
Vendor imageGoogleLink800d1e7195f096798884ccada37f0ff2ee2a991833f75a8ff5cd63632ffd2e57
GPS, Audio, Camera, Gestures, Graphics, DRM, Video, SensorsQualcommLinkf0ab49d876427109cd23a03bf86cdfa515466394150a129b6f6fb208264e3bf8

5. 生成vendor文件夹

从上面的两个link,下载两个脚本,将其剪切到aosp的源码目录下,然后解压执行。

执行过程中需要同意协议,到最后,要手动输入“I ACCEPT”, 如果手快了一直回车,最后默认就是不同意,这个地方真的是很狗啊,搞了好几次。 两个脚本结束后,会生成vendor文件夹。

6. 源码编译

  • 初始化编译环境
 $ source build/envsetup.sh 
 $ make clobber

build/soong/cc/config/x86_darwin_host.go文件需要做如下修改:

20220824173420.jpg

  • 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/你自己的目录'