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

如何在Amazon Device Farm运行UiAutomator 2.0测试?遇Dex文件缺失报错求助

解决Amazon Device Farm上UiAutomator 2.0测试的两个关键问题

嘿,我之前帮朋友排查过类似的场景,给你梳理下针对性的解决方案:

1. 关于Desired Capability被移除的问题

Amazon Device Farm现在对UiAutomator 2.0的支持已经做了简化,很多之前需要手动配置的Desired Capability(比如automationName、uiautomator2ServerInstallTimeout这类)已经被平台自动接管了,你不需要在代码里再设置这些参数。

你只需要确保你的测试项目依赖了正确的UiAutomator 2.0库,比如在项目的Module级别build.gradle里添加:

androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0' // 可以替换为更高稳定版本

这样Device Farm就能自动识别并适配UiAutomator 2.0的运行环境,不用纠结被移除的capability了。

2. 解决“根测试包中不存在classes dex文件”的报错

这个问题核心是你上传的jar包不符合Device Farm的测试包要求——它需要的是包含dex字节码的可执行测试包,而不是普通的Java编译jar。这里有几个靠谱的解决步骤:

  • 优先用测试APK替代jar包上传:Device Farm对UiAutomator 2.0测试更推荐上传测试APK,而不是jar包。你可以在Android Studio里执行./gradlew assembleAndroidTest命令(或者通过Build菜单:Build -> Build Bundle(s)/APK(s) -> Build APK(s)),生成的测试APK会在app/build/outputs/apk/androidTest/[debug/release]/目录下,直接上传这个APK就好,它会包含所有必要的dex文件和依赖。
  • 确认测试类的目录结构:你的UiAutomator测试类必须放在androidTest/java/[你的应用包名]目录下(比如com.yourapp.test),而不是普通的test/java目录——后者是本地单元测试,Device Farm不识别这类测试用于UiAutomator 2.0的真机测试。
  • 如果一定要用jar包(不推荐):需要用Android的dx工具把编译后的class文件转换成dex,再打包成jar。命令大概是:
dx --dex --output=tests.dex your-test-classes-dir
zip -r test-jar-with-dex.jar tests.dex

但这种方式容易遗漏依赖,还是优先用测试APK更稳妥。

最后总结下操作流程

  1. 清理代码中被Device Farm移除的Desired Capability,确保测试项目依赖正确的UiAutomator 2.0库;
  2. 用Gradle生成测试APK(assembleAndroidTest);
  3. 上传你的应用APK和测试APK到Device Farm;
  4. 启动测试任务,应该就能正常识别测试类并执行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:31:21