先吐槽,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://source.android.com/setup/build/building(但是不能全信)
主要步骤是执行下列命令:
1.
. build/envsetup.sh
2.
lunch [device name]
或
lunch
然后在他列出的列表里面选择你的机型
3.
make
这行这三部就开始编译了,编译的时间很长,请预留充足的磁盘空间。另外要提一下第二部lunch的device name参数的选择,可以看https://source.android.com/setup/build/running#selecting-device-build:Pixel 4选flame(他娘的google的文档现在纠正过来了,之前写的是coral,害老子花了多好几天的时间)
还可以通过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.img和radio-flame-g8150-00082-210106-b-7065218.img
文档里面完全没有写这玩意儿~~
你不说,我怎么知道我错在哪,让我去猜吗!!!
好吧我去猜!!!
下载编译驱动
在这里面https://developers.google.com/android/drivers,找到自己的机器的驱动,下载下来。(别问我是怎么知道的)
下载后解压出两个可执行脚本extract-google_devices-flame.sh和extract-qcom-flame.sh,放到AOSP源码根目录.
执行之,然后又要骂娘了(谁执行谁知道,剧透:按回车别按太快)。
执行完之后,会出现一个vender目录,这个目录里面有驱动的编译脚本。恭喜你重新编译吧。
(我是clean之后编译的,我不知道直接编译能不能行,别问我为什么要clean后再编译,因为编不过)。
编译不过,错误是找不到 vendor/qcom/coral/proprietary/com.qualcomm.qcrilmsgtunnel.xml
我clean了好几次,还是不过。一下这个文件是哪里引用的搜,然后开始骂娘。
人家都写flame,就你丫特殊要写coral,这哪个工程师没长眼睛。
把他改成flame,重新编译。这次居然编过了~~~
编译完后会发现out目录里面会多出bootloader.img,vendor.img,radio.img等。
ok,重新执行
fastboot flashall -w