You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android模拟器中修改vendor.img内容并使其正常挂载生效

自定义vendor.img模拟器挂载异常解决方案

根因说明

你对-vendor参数的基础功能理解没有偏差,出现哈希不匹配是AOSP模拟器默认机制导致的:

  • AVD启动后会默认缓存分区状态到本地快照,后续启动会优先加载快照内容,不会读取新的镜像文件
  • 新版AOSP模拟器默认开启VendorOverlay特性,/vendor分区实际是overlayfs挂载的合并层,底层镜像的变更会被上层临时缓存覆盖
  • 支持动态分区的AOSP版本中,init进程默认从super.img内嵌的vendor分区挂载,-vendor参数指定的独立块设备不会被主动挂载
  • 若自制vendor.img的文件系统格式、分区校验签名和当前编译的AOSP版本不匹配,系统挂载失败后会自动fallback到内置的原始vendor镜像

操作步骤

按以下顺序执行,即可让/vendor目录和自定义镜像完全一致:

  1. 清理AVD历史缓存
    启动模拟器时必须添加-wipe-data参数,彻底清除之前的快照、用户数据和分区缓存,避免加载旧状态:
emulator -wipe-data -vendor /path/to/my/vendor.img

如果仍不生效,额外添加-no-snapshot参数完全禁用快照功能。

  1. 关闭VendorOverlay特性
    启动时添加-feature -VendorOverlay参数,强制系统直接挂载底层vendor块设备,不叠加临时可写层:
emulator -wipe-data -no-snapshot -vendor /path/to/my/vendor.img -feature -VendorOverlay
  1. 动态分区机型改用super.img替换方案
    如果你的AOSP版本使用动态分区机制,需要将自定义vendor.img重新打包进super.img后通过-super参数指定:
  • 使用AOSP编译输出的lpmake工具,将自定义vendor.img打包为新的super.img
  • 启动命令替换为:
emulator -wipe-data -no-snapshot -super /path/to/custom_super.img -feature -VendorOverlay
  1. 挂载结果校验
    模拟器启动后执行adb shell mount | grep vendor,确认输出中挂载源为对应块设备而非overlay,此时再校验/vendor目录下的文件哈希即可和自定义镜像完全匹配。

内容的提问来源于stack exchange,提问作者Adam Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:24:00