connectedAndroidTest失败,"没有连接的设备",但仪器工作

ris*_*en0 6 android android-emulator android-instrumentation

我正在为我的Android应用程序设置一个Jenkins节点(在Mac OS X上)运行检测测试.

我的Jenkins项目启动Android模拟器并运行Gradle任务:app:connectedAndroidTest.但是任务一直是不稳定的,有时候能够很好地运行测试,但大多数情况下失败并出现以下错误:

:app:connectedAndroidTest FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:connectedAndroidTest'.
> com.android.builder.testing.api.DeviceException: No connected devices!
Run Code Online (Sandbox Code Playgroud)

经过一番调查,我发现:

  • 该问题仅发生在该机器上; 在我的机器(另一台Mac OS X)上,该任务始终按预期工作,在Android Studio内外;
  • 问题发生在Jenkins之外,即手动启动模拟器并从命令行运行Gradle任务;
  • 即使Jenkins输出警告使用非标准端口,即使使用更常见的5554-5555,也会出现问题.
  • adb devices 显示处于在线状态的模拟器;
  • adb shell am instrument 工作得很好;

因此我可以说问题是:app:connectedAndroidTest没有检测到正在运行的模拟器.

我已经半成了一个安装APK并运行的shell脚本am instrument,但后者不会生成与JUnit兼容的输出.

所以在做额外的工作之前,我想知道如何"修复"Gradle任务以便它检测到模拟器.我也很乐意获得进一步查明问题的建议,例如找出Gradle任务在我的机器上工作的原因.

小智 0

首先清理您的项目,然后重新创建 Android 模拟器,执行 cmd commond adb start-service 。如果再次失败,您应该使用市场上其他模拟器。