[转] Pixel 4 AOSP 源码编译及刷机

先吐槽,Google 的代码和文档写的是真烂。完全根据他的文档来操作是完不成 Pixel 4 AOSP 源码编译和刷机这个事情的。经过痛苦的挣扎,最后终于刷机成功了。

代码下载

代码下载的流程在这,https://source.android.com/setup/build/downloading,这一步基本不会有啥问题,大概的步骤说一下。

repo init 要找到跟自己机器匹配的代码仓库。这里(https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds)列出了所有 AOSP 源码对应的支持的机器,找到你对应的机器的那一行的 TAG,然后执行 repo init -u https://android.googlesource.com/platform/manifest -b [TAG ID]

因为我的机器是 Pixel 4,所以我的执行命令是:repo init -u https://android.googlesource.com/platform/manifest -b android-11.0.0_r36

init 完,直接 repo sync 就行了(VPN 什么的自行搞定)。

有鉴于简中区的下载现状,推进本节起始流程链接中的过程可能会有所苦难。请将 https://android.googlesource.com/ 全部使用 https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/ 代替即可。详情可参见 https://mirror.tuna.tsinghua.edu.cn/help/AOSP/

代码编译

基本流程看这:https://source.android.com/setup/build/building(但是不能全信)。

主要步骤是执行下列命令:

  1. . build/setup.sh
  2. lunch [device name];不带参数的话,会出现机型列表供选择
  3. make

这就开始编译了,编译的时间很长,请预留充足的磁盘空间。另外要提一下第二步 lunch 的 device name 参数的选择,可以看 https://source.android.com/setup/build/running#selecting-device-build:Pixel 4 选 flame。

可以通过 adb 命令获得手机的 device name:adb shell getprop| grep name

刷机

需要先解锁 bootloader 然后进入 fastboot 刷机。整个过程比较简单,照着文档做就行了(https://source.android.com/setup/build/running#unlocking-the-bootloader)。

刷机进入 fastboot 后最后是执行 fastboot flashall -w 然后等待,等到最后启动会一直停在 bootloader 界面。起不来!!!

Pixel Factory Image

因为机器一直卡在 bootloader 界面起不来,无奈就去找了 Pixel 的官方厂包刷机(https://developers.google.com/android/images)。

找到对应的机型,下载 zip 厂包,然后执行它的 flashall.sh,等待后,系统起来了。

这个时候发现,厂包里面比你编译出来的 image 多了这么两个东西:bootloader-flame-c2f2-0.3-7062597.imgradio-flame-g8150-00082-210106-b-7065218.img

文档里面完全没有写这玩意儿!你不说,我怎么知道我错在哪,让我去猜吗!!!好吧我去猜!!!

下载编译驱动

在这里面 https://developers.google.com/android/drivers,找到自己的机器的驱动,下载下来(别问我是怎么知道的)。

下载后解压出两个可执行脚本 extract-google_devices-flame.shextract-qcom-flame.sh,放到 AOSP 源码根目录。

执行之,然后又要骂娘了(谁执行谁知道,剧透:按回车别按太快)。

执行完之后,会出现一个 vender 目录,这个目录里面有驱动的编译脚本。恭喜你重新编译吧。

(我是 clean 之后编译的,我不知道直接编译能不能行,别问我为什么要 clean 后再编译,因为编不过)。

编译不过,错误是找不到 vendor/qcom/coral/proprietary/com.qualcomm.qcrilmsgtunnel.xml,我 clean 了好几次,还是不过。搜一下这个文件是哪里引用的,然后开始骂娘。

人家都写 flame,就你丫特殊要写 coral,这哪个工程师没长眼睛。把它改成 flame(截至 2022-12-06,文中提到的 flame 被写成 coral 的错误仍然存在,其所在源文件为 $(AOSP_ROOT)/vendor/qcom/flame/device-partial.mk —— 转载者注),重新编译。这次居然编过了~~~

编译完后会发现 out 目录里面会多出 bootloader.imgvendor.imgradio.img 等。

OK,重新执行 fastboot flashall -w,恭喜,启动成功!!!徜徉在无尽的代码中吧~~~

————————————————

版权声明:本文为 CSDN 博主「zhaohad」的原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhaohad/article/details/117749815

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注