AOSP 编译后产生的 img 总结

AOSP 编译完成后在 `out/target/product/****/` 目录下生成的一系列 `.img` 文件。这些 `.img` 文件大多是将来烧录到设备(或模拟器)中的系统分区镜像。下面是对每个镜像文件的详细解释:

🔧 各 .img 文件含义详解

文件名 说明
boot-debug.img 带有调试信息的 boot 镜像,可能用于开发调试。
boot.img 包含内核 (kernel) 和 ramdisk,是设备启动的核心部分。
cache.img 系统使用的临时缓存分区,运行时用于缓存 OTA 下载内容、安装包等。
dtb.img / dtbo.img Device Tree Blob(设备树)用于描述硬件布局;dtbo 是 Overlay(覆盖层)。
metadata.img Android Verified Boot (AVB) 或 FBE(文件级加密)所需的元数据分区。
persist.img 持久性数据存储(如 Wi-Fi 校准数据、蓝牙地址、传感器配置等),系统不会格式化。
prebuilt_dtbo.img 预构建的设备树 Overlay 镜像,有时与 dtbo.img 相同。
product.img 存放设备厂商特有的 App、库等(Project Treble 后新增的分区)。
ramdisk-debug.img 用于调试的 initramfs,可能包含额外日志等信息。
ramdisk.img boot.img 一起使用,启动时加载基础文件系统的临时根目录。
ramdisk-recovery.img Recovery 模式下使用的 ramdisk。
recovery.img Recovery 分区镜像,用于进入系统恢复模式。
super.img 动态分区系统的容器,包含 system、product、vendor 等逻辑分区(Android Q 起)。
super_empty.img 空的 super 分区模板,供动态映像生成工具使用。
system.img 系统分区,包含 Android 操作系统的核心组件(framework、核心应用等)。
system_ext.img 系统扩展分区(Project Treble 后),一般用于 AOSP 扩展之外的 system 组件。
userdata.img 用户数据区,用于实际用户数据存储(安装 App、设置、下载等)。
userdata-qemu.img 专为模拟器(QEMU)准备的用户数据分区。
vbmeta.img AVB 元信息,校验 boot、system 等分区的完整性。
vbmeta_system.img 如果 system 分区启用了独立的 AVB 校验,会生成此镜像。
vendor.img 硬件相关的 HAL、驱动库、二进制 blob 等,和设备厂商强相关。

🧠 附加知识:关键系统分区简图

┌──────────────┬────────────────────────────────────┐
│ boot.img     │ 启动内核 + ramdisk                 │
├──────────────┼────────────────────────────────────┤
│ recovery.img │ 恢复模式(启动修复/刷机)         │
├──────────────┼────────────────────────────────────┤
│ system.img   │ Android 核心系统                   │
├──────────────┼────────────────────────────────────┤
│ vendor.img   │ 硬件相关代码,驱动库,HAL          │
├──────────────┼────────────────────────────────────┤
│ product.img  │ 自定义 app, 配置文件                │
├──────────────┼────────────────────────────────────┤
│ userdata.img │ 用户数据、安装的 App               │
├──────────────┼────────────────────────────────────┤
│ vbmeta.img   │ 启动时验证用,防止 image 被篡改    │
└──────────────┴────────────────────────────────────┘

🛠️ 模拟器或真机烧录常用 img

对于模拟器启动常用:

  • kernel(可能打包在 boot.img
  • system.img
  • userdata.imguserdata-qemu.img
  • ramdisk.img(或者直接用 boot.img 启动)

对于烧录真机:

  • boot.img
  • recovery.img
  • system.img
  • vendor.img
  • vbmeta.img
  • dtbo.img
  • persist.img
  • super.img(如果使用动态分区)

如果你想运行模拟器而不是烧录真机,可以使用如下命令(假设你使用的是 AOSP 自带 emulator):

emulator -verbose -show-kernel \
  -kernel kernel-ranchu \
  -ramdisk ramdisk.img \
  -system system.img \
  -userdata userdata-qemu.img \
  -gpu host

⚠️注意:有的设备不会生成 kernel-ranchu,你可能需要手动指明内核或者直接使用 boot.img

posted @ 2025-08-05 14:30  Greg_LYU  阅读(133)  评论(0)    收藏  举报