最近在折腾 Android 系统, 一直使用公司的开发环境,比较大, 不适合在家里折腾。因此在闲鱼上买了一个 Piexl 7手机,准备自己编译源码烧录进去玩,没想到历经坎坷,一度觉得买手机的钱要打水漂了。在此记录一下过程。
Pixel 7 AOSP源码编译 与烧录踩坑指南
讲在前面的话
刚开始刷机可能会刷机失败,变砖或一直重启,不要慌张,大多数都是可以救回来的。可以查看此文章 pixel 变砖刷机教程, 建议使用浏览器的方式刷机,试了很多次,都成功了。
如果编译过程中遇到错误或者烧录过程中,遇到错误,可以查看此文章我编译的环境用的公司的服务器,所以问题较少。
一、获取适合 Pixel 7手机的源码
确认当前手机 build ID
我的 build ID 为TQ2A.230505.002。通过 build id 来指定, 我们要拉取的对应源码分支。需要在官网 代号、标记和 build 号找对应标记, 如下我们对应的标记应为android-13.0.0_r43
, 接下来获取源码的时候会用到。
指定对应分支获取源码
# 初始化repo
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r43
# 开始拉取
repo sync
后面-b 指定的就是我们前面查找到的标记。(如何没有安装 repo工具的,需要自行搜索安装下哈)
二、下载对应的vendor和驱动包
我就是忘记执行这一步,刷完机之后一直重启!!!
根据我们的 build id 找到对应压缩包
不过这里可能经常会出现如下界面,需要梯子。(如何有朋友刚好是Pixel 7手机,可以评论区联系我,我发送给你)
下载后是一个压缩包,解压后是一个 shell 脚本,拷贝到源码根目录下
执行脚本解压 vendor 包
执行之后,他会让你阅读一个协议文档,并接受。
阅读到最后(用 ctrl + d 会快速翻页, 不会真的有人认真看吧~),输入 I ACCEPT
, 开始解压
三、编译AOSP源码
//初始化环境变量,执行源码仓库内的脚本自动初始化所需要的环境变量
source build/envsetup.sh
//选择build 配置
//方法1
lunch # 展开所有配置列表
29 # 选择对应build 配置的id
//方法2
lunch aosp_panther-userdebug #直接lunch 对应build 配置的id
//开始漫长的编译
make -j8
//编译成功显示
#### build completed successfully (01:40:48 (hh:mm:ss)) ####
如果是编译其他手机源码,lunch 的时候,可以在这个映射表里面查找需要选择哪个产品
可能会遇到各种各样的问题,可以参考此博客
四、配置手机环境
1.进入开发者模式
在关于手机,版本号条目中,连续点击版本号多次,返回,进入系统条目,进入开发者选项,打开 adb和 OEM。
进入 fastboot模式解锁
通过 usb 数据线连接手机和电脑, adb device
确认 adb 被正常打开后,输入adb reboot bootloader
进入bootloader,通过 fastboot device 确认手机连接正常 (图片来自于参考链接)
通过fastboot flashing unlock
指令进行解锁。比较老的手机可能为fastboot oem unlock
。上面命令执行完成后,还需要手机上进行确认操作,通过操作按键解锁(图片来自于参考链接)
接下来就是需要静静等待源码编译完整了.
五、刷机
等待源码编译完成后,我们进入/out/target/product/panther
目录(其中panther为设备代号)
如果还在 fastboot 模式,则在执行 fastboot flashall -w
指令即可。如果不在 fastboot 模式,执行adb reboot bootloader
进入后执行 fastboot flashall -w
,等待刷机
六、最终效果
七、参考链接
https://blog.youkuaiyun.com/learnframework/article/details/125269456
https://blog.youkuaiyun.com/weixin_43974127/article/details/137922141
https://zhuanlan.zhihu.com/p/638915928
https://source.android.com/docs/setup/build/running?hl=zh-cn#selecting-device-build
最后,祝各位刷机顺利,工作顺利~