AOSP编译后刷入真机

1,039 阅读3分钟

将 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

  1. 启用开发者选项:

    • 进入手机设置 → 关于手机 → 连续点击“版本号”7 次。
    • 返回设置 → 系统 → 开发者选项 → 启用 USB 调试 和 OEM 解锁
  2. 连接手机到电脑,确认授权:

    adb devices  # 应显示设备序列号
    
  3. 重启到 Bootloader 模式:

    adb reboot bootloader
    
  4. 解锁 Bootloader:

    fastboot flashing unlock
    
    • 手机屏幕上确认解锁(会清除所有数据!)。

2.2 刷入 AOSP 镜像

  1. 进入 AOSP 输出目录:

    cd out/target/product/[设备代号]/  # 如 raven(Pixel 6 Pro)
    
  2. 刷入所有分区(关键步骤):

    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
      
  3. 清除缓存并重启:

    fastboot erase cache
    fastboot reboot
    
  4. 关键镜像文件:

文件名作用刷机命令示例
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 或黑屏。

  • 解决

    1. 从 Google Drivers 下载对应版本的驱动。
    2. 解压后运行脚本,自动提取到 vendor/ 目录。
    3. 重新编译并刷入。

3.2 分区大小错误

  • 现象fastboot flash 报错 FAILED (remote: 'Not enough space')

  • 解决

    • 检查设备分区表是否匹配:

      fastboot getvar all
      
    • 如果是 Pixel 设备,尝试动态分区调整:

      fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img
      

3.3 刷机后无法进入系统

  • 现象:循环重启或卡在启动动画。

  • 解决

    1. 进入 Bootloader 模式:

      adb reboot bootloader
      
    2. 重新刷入原厂镜像恢复:

      • 从 Google Factory Images 下载对应版本。
      • 解压后执行 flash-all.sh(Linux/macOS)或 flash-all.bat(Windows)。

3.4 ADB/Fastboot 设备未识别

  • 现象adb devices 或 fastboot devices 无输出。

  • 解决

    • 检查 USB 线缆和端口(建议使用原装线)。

    • 安装正确的 USB 驱动:


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. 注意事项

  1. 数据安全:刷机会清除所有数据,务必提前备份。
  2. 版本匹配:AOSP 分支、设备型号和驱动必须严格对应。
  3. 网络问题:首次启动可能需要科学上网(Google 服务验证)。

6. 扩展阅读

7. 扩展:从官方镜像恢复

如果刷入 AOSP 后设备变砖,可通过官方镜像恢复:

  1. 下载对应版本的 Google Factory Image

  2. 解压后执行:

    ./flash-all.sh  # macOS/Linux