使用调试 Ramdisk 进行 VTS 测试

在 Android 10 中,用于运行 CTS-on-GSI/VTS 合规性测试的通用系统映像 (GSI) 从 userdebug 改成了用户版本类型,这是因为 GSI 已进行版本签名。但是,用户版本中未提供 adb root 命令,该命令可向受测 Android 设备授予主机 root 权限。这会带来问题,因为 VTS 需要 adb root 权限才能运行。

我们在 Android 10 中引入了调试 ramdisk,以便在设备处于解锁状态时能够运行 adb root。这样就可以重复使用相同的用户版本 system.img(GSI 或 OEM 的 system.img),从而简化测试流程。下表显示了 Android 10 中合规性测试的映像和版本类型。

测试套件 测试所用的版本版本类型调试 ramdisk是否运行 adb root? Android 9 -> 10 版本变体变化
CTS OEM 的系统 用户 没有变化
CTS-on-GSI GSI 用户

userdebug -> 用户 GSI

已进行版本签名

STS OEM 的系统 用户 Q 中新增
VTS GSI 用户

userdebug -> 用户 GSI

已进行版本签名

使用调试 ramdisk 的先决条件

调试 ramdisk 由运行合规性测试的 OEM 提供。它不应进行版本签名,并且只能在设备处于解锁状态时使用。

AOSP 的变化

AOSP 中的调试 ramdisk 变化由 debug_ramdisk #标签标识。

这些附加的映像文件是在版本文件夹 out/target/product/$(TARGET_DEVICE) 下生成的:

  • ramdisk-debug.img
  • boot-debug.img

boot-debug.img 刷写到设备的 /boot 分区上时,系统会加载 userdebug 版本的系统 sepolicy 文件和一个附加的属性文件 adb_debug.prop。这样,就可以在用户版本 system.img(GSI 或 OEM 的 system.img)中提供 adb root 了。