记录自己在编译Android源码并刷入pixel3时遇到的一些坑。
1.repo多次发生fatal错误
解决办法:换国内镜像源。
如果是校园网,特别推荐使用中科大的源,因为走的是教育网专线,特别快。
另外,如果还是不能解决,可以下载一个aosp-latest压缩包,解压出来后把里面的projec-objects和projects文件夹粘贴到repo目录下,再执行repo sync就同步得很快了。
2.执行make的注意事项
-
一定要先lunch
执行make之前一定要先执行lunch,选择手机对应的开发代号,比如我的pixel3开发代号是blueline。
很坑的是:没有lunch而直接make也是可以编译的,但是刷不上手机。害得我在这儿折腾了好久。 -
要把闭源驱动解压好。Android是开源的,但驱动是闭源的。下载的开源代码是不含驱动的,需要到官网去下载相应驱动。安卓国内官网:
- make -j数量不宜过多。
如果并发任务太多,可能会导致内存爆满而终止编译。个人经验make -j数量最好控制在内存GB数的一半,比如16G内存就执行make -j8。
3.刷机注意事项
- 高版本安卓手机不能刷入低版本。
我尝试过将Android 9编译刷入一台拥有Android 10 的机子,刷入失败。后来又尝试将Android 10刷入一台拥有Android 11的机子,依然刷入失败。白白花了两天编译。血泪教训。 - adb 和 fastboot 要现编译。
如果你和我一开始一样,使用
sudo apt install adb fastboot
来获取adb和fastboot,那你多半是刷不成功的。
正确的姿势是:在Android源码文件夹中先lunch,选择手机对应的开发代号,再使用make命令:
make adb fastboot
这样获取的adb和fastboot版本才是和Android版本相符的。