用途:Gradle Managed Devices(GMD)把模拟器纳入构建流程。在 build.gradle.kts 中声明设备后,执行 ./gradlew <device>DebugAndroidTest 即可让 Gradle 下载系统镜像、启动全新模拟器、运行 androidTest、收集结果并关闭模拟器,从而让 CI 与本地运行在同一设备上,无需手工管理 AVD。
主要能力:支持在 android.testOptions.managedDevices 的 localDevices 中通过 create("名称") 定义 ManagedVirtualDevice(device、apiLevel、systemImageSource,可用 require64Bit = true),并用 groups 组合设备矩阵。GMD 会为每个设备、每个组和全部设备生成任务,例如 ./gradlew pixel6api34DebugAndroidTest、./gradlew ciMatrixGroupDebugAndroidTest、./gradlew allDevicesCheck。报告输出在 app/build/reports/androidTests/managedDevice/<deviceName>/ 与 app/build/outputs/androidTest-results/managedDevice/;附加输出位于 app/build/outputs/managed_device_android_test_additional_output/<deviceName>/。CI 中可优先使用 ATD 镜像(aosp-atd、google-atd)以加快启动。
使用方式:需 AGP 支持 managedDevices DSL,androidTest 已配置 testInstrumentationRunner 与依赖,构建机具备磁盘空间与 KVM/HAXM 等虚拟化能力,并已接受系统镜像许可(sdkmanager --licenses)。CI 需启用 KVM;GMD 默认无头运行。慢速套件可用文档所述的 numManagedDeviceShards 属性配合 --max-concurrent-shards 分片。
适用场景:希望测试设备矩阵进入版本控制、在 CI 中可复现地运行仪器化测试,或需要多 API 级别/形态并行验证时。
限制:GMD 用于 Gradle 创建的模拟器;在物理设备或已有模拟器上运行应使用 ./gradlew connectedAndroidTest / connectedDebugAndroidTest。直接调用 am instrument、Test Orchestrator 接线或 AndroidJUnit4 测试类编写不在本技能范围。任务退出码可能无法区分测试失败与基础设施失败,应归档并阅读 HTML 报告。ATD 与分片属性可能随 AGP 版本而异,需查阅所使用版本的文档确认。具体价格、收费与效果资料暂未提供。