先吐槽一下,Google的代码和文档实在是太糟糕了。 如果你完全按照他的文档来编译Pixel 4 AOSP源代码并省砖是不可能的。 经过痛苦的挣扎,他终于成功救出了布里克。
代码下载
代码下载的过程就到这里了,这一步基本上不会有什么问题,我说一下大概的步骤。
repo init 查找与您的机器匹配的代码存储库
这里列出了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可以自己处理)
代码编译
基本过程请参见:(但你无法相信这一切)
主要步骤是执行以下命令:
1.
. build/envsetup.sh
2.
lunch [device name]
或者
lunch
然后在他列出的列表中选择您的型号
3.
make
此行开始编译三个部分,编译时间很长,请在C盘预留足够的空间。 另外,我想提一下第二次午餐的设备名称参数的选择。 可以看到:Pixel 4选择了flame(该死的google文档现在已经改正了,之前写的是coral,花了我好几天的时间。)
还可以通过adb命令获取手机的设备名称:
adb shell getprop | grep name
(好吧,刚来的时候就被文档惹恼了,如果不想在错误的道路上多花时间,就先看完再操作吧)
闪光
需要先解锁bootloader,然后进入fastboot才能省砖。 整个过程比较简单,按照文档操作即可
刷入fastboot后,最后一步是执行:
fastboot flashall -w
然后等待。 。 。 。 。 。 。
等到最后一次启动仍然会停在bootloader界面。 起不来了! ! !
像素工厂图像
由于机器还是卡在bootloader界面无法启动,无奈只能去Pixel官方工厂救砖:
找到对应的型号,下载zip工厂包,然后执行他的flashall.sh。 等待后,系统启动。
这时候我发现他的工厂包上比你编译的镜像多了两个东西:bootloader-flame-c2f2-0.3-7062597.img和radio-flame-g8150-00082-210106-b-7065218.img
文档里没有这样写啊~~
如果你不告诉我,我怎么知道我错在哪里? 让我猜猜! ! !
好吧,我来猜测一下! ! !
下载并编译驱动程序
在此找到自己机器的驱动并下载。 (别问我怎么知道的)
下载后解压两个可执行脚本extract-google_devices-flame.sh和extract-qcom-flame.sh,并将其放入AOSP源码根目录下。
执行一下,然后就又浑了(谁执行了就知道了,剧透:别按回车太快)。
执行后会出现一个vendor目录,里面包含驱动的编译脚本。 恭喜重新编译。
(我是clean之后编译的,不知道能不能直接编译,别问我为什么需要clean然后编译swift源码编译,因为编译不了)。
编译,但是错误是找不到vendor/qcom/coral/proprietary/com.qualcomm.qcrilmsgtunnel.xml
我已经清理过好几次了,但还是没有效果。 看看那里引用了这个文件的搜索,然后就开始糊涂了。
每个人都写火焰swift源码编译,但你特别想写珊瑚。 这个或那个工程师的鼻子不长。
将他改为flame并重新编译。 这次我成功了~~~
编译完后你会发现out目录下多了bootloader.img、vendor.img、radio.img等。
好的,重新执行
fastboot flashall -w
恭喜,启动成功! ! ! 徜徉在无尽的代码中~~~