将 AOSP 编译后的系统刷入真机(如 Google Pixel 系列)是一个复杂的过程,需要解锁 Bootloader、匹配设备型号和 Android 版本,并正确刷入镜像文件
1. 准备工作
1.1 支持的设备
- 官方支持:Google Pixel 系列(如 Pixel 4/5/6/7),其他设备需要厂商提供内核和驱动。
- AOSP 版本匹配:确保编译的 AOSP 分支与设备型号的出厂版本一致(例如 Pixel 6 需对应
android-13.0.0_rXX)。
1.2 所需工具
-
编译好的 AOSP 镜像(位于
out/target/product/[设备代号]/)。 -
Android 平台工具(
adb和fastboot):bash
复制
下载
sudo apt install android-tools-adb android-tools-fastboot # Ubuntu brew install android-platform-tools # macOS -
设备驱动(从 Google Drivers 下载,解压后放入 AOSP 源码根目录)。
2. 具体刷机步骤
2.1 解锁 Bootloader
-
启用开发者选项:
- 进入手机设置 → 关于手机 → 连续点击“版本号”7 次。
- 返回设置 → 系统 → 开发者选项 → 启用 USB 调试 和 OEM 解锁。
-
连接手机到电脑,确认授权:
adb devices # 应显示设备序列号 -
重启到 Bootloader 模式:
adb reboot bootloader -
解锁 Bootloader:
fastboot flashing unlock- 手机屏幕上确认解锁(会清除所有数据!)。
2.2 刷入 AOSP 镜像
-
进入 AOSP 输出目录:
cd out/target/product/[设备代号]/ # 如 raven(Pixel 6 Pro) -
刷入所有分区(关键步骤):
fastboot flash boot boot.img fastboot flash system system.img fastboot flash vendor vendor.img fastboot flash product product.img fastboot flash vbmeta vbmeta.img # 如果存在-
如果编译时选择了
-eng或-userdebug版本,还需刷入userdata.img:fastboot flash userdata userdata.img
-
-
清除缓存并重启:
fastboot erase cache fastboot reboot -
关键镜像文件:
| 文件名 | 作用 | 刷机命令示例 |
|---|---|---|
boot.img | 内核 + 初始 RAM 磁盘(Initramfs) | fastboot flash boot boot.img |
system.img | 系统分区(包含 Android 框架) | fastboot flash system system.img |
vendor.img | 厂商驱动/闭源组件 | fastboot flash vendor vendor.img |
userdata.img | 用户数据分区(可选刷入) | fastboot flash userdata userdata.img |
vbmeta.img | 验证启动元数据(AVB 2.0) | fastboot flash vbmeta vbmeta.img |
cache.img | 缓存分区(通常无需刷入) | fastboot flash cache cache.img |
3. 常见问题及解决
3.1 驱动不匹配
-
现象:刷入后无法启动,卡在 Google LOGO 或黑屏。
-
解决:
- 从 Google Drivers 下载对应版本的驱动。
- 解压后运行脚本,自动提取到
vendor/目录。 - 重新编译并刷入。
3.2 分区大小错误
-
现象:
fastboot flash报错FAILED (remote: 'Not enough space')。 -
解决:
-
检查设备分区表是否匹配:
fastboot getvar all -
如果是 Pixel 设备,尝试动态分区调整:
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img
-
3.3 刷机后无法进入系统
-
现象:循环重启或卡在启动动画。
-
解决:
-
进入 Bootloader 模式:
adb reboot bootloader -
重新刷入原厂镜像恢复:
- 从 Google Factory Images 下载对应版本。
- 解压后执行
flash-all.sh(Linux/macOS)或flash-all.bat(Windows)。
-
3.4 ADB/Fastboot 设备未识别
-
现象:
adb devices或fastboot devices无输出。 -
解决:
-
检查 USB 线缆和端口(建议使用原装线)。
-
安装正确的 USB 驱动:
- Linux:
sudo apt install android-tools-adb - Windows:安装 Google USB Driver。
- Linux:
-
4. 真机调试技巧
4.1 查看系统日志
adb logcat # 实时日志
adb shell dmesg # 内核日志
4.2 推送文件到设备
adb push local_file /sdcard/
adb pull /sdcard/remote_file ./
4.3 重启到 Recovery/Fastboot
adb reboot recovery
adb reboot bootloader
5. 注意事项
- 数据安全:刷机会清除所有数据,务必提前备份。
- 版本匹配:AOSP 分支、设备型号和驱动必须严格对应。
- 网络问题:首次启动可能需要科学上网(Google 服务验证)。
6. 扩展阅读
- 官方文档:AOSP 刷机指南
- Pixel 设备支持列表:Google Factory Images
- 社区支持:XDA Developers 论坛(搜索你的设备型号)。
7. 扩展:从官方镜像恢复
如果刷入 AOSP 后设备变砖,可通过官方镜像恢复:
-
下载对应版本的 Google Factory Image。
-
解压后执行:
./flash-all.sh # macOS/Linux