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

使用Gradle Managed Device与Github Action做CI测试遇设备配置失败求助

解决Github Action中Gradle Managed Device设备初始化失败问题

错误原因

Github Action默认托管Runner的资源(2核CPU、7GB内存)有限,Gradle Managed Device启动Android模拟器需要较多CPU和内存资源,当资源不足以支撑设备初始化时就会触发该错误。本地运行正常是因为本地设备通常具备更充足的硬件资源。

解决方案

1. 减少设备请求数量

确保在模块的build.gradle中只声明1台测试设备,避免多设备同时启动消耗过多资源:

android {
    testOptions {
        managedDevices {
            devices {
                nexusOneApi30(com.android.build.api.dsl.ManagedVirtualDevice) {
                    device = "Nexus One"
                    apiLevel = 30
                    systemImageSource = "aosp-atd"
                }
            }
        }
    }
}

2. 禁用测试分片

测试分片会启动额外进程或设备,进一步消耗资源。可以通过两种方式禁用:

  • 在Github Action的Gradle命令中移除--test-shard相关参数
  • 在build.gradle中全局配置禁用分片:
    tasks.withType(Test) {
        sharding = false
    }
    

3. 使用更高配置的Github Runner

默认Runner资源不足时,切换到大规格的托管Runner(如ubuntu-latest-large,提供4核CPU、14GB内存),在Action的YAML文件中修改:

jobs:
  run-tests:
    runs-on: ubuntu-latest-large
    steps:
      # 后续步骤保持不变

4. 启用硬件加速

Github托管Runner支持KVM硬件加速,启用后能大幅降低模拟器的资源消耗并提升启动速度。在Action步骤中添加:

steps:
  - name: 启用KVM硬件加速
    run: |
      echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
      sudo udevadm control --reload-rules
      sudo udevadm trigger --subsystem-match=misc --action=add

5. 优化Gradle资源占用

调整Gradle配置,减少其对内存和CPU的占用,为模拟器预留更多资源。在gradle.properties中添加:

org.gradle.parallel=false
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m

内容的提问来源于stack exchange,提问作者hannes ach

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:21:01