尝试运行检测测试时出现“未知API级别”错误

时间:2015-01-28 14:44:37

标签: android

我试图在通过以太网连接的设备(非手持设备)上运行测试,但我看到的只是失败。我使用gradle任务 connectedAndroidTest 来运行检测测试,并且在通过USB连接到我的PC的手持设备上正常工作。但是,甚至无法在远程设备上启动相同的测试。显示的错误是“未找到测试”。以前,如果我在没有连接任何设备的情况下启动仪器测试,我会看到相同的错误,但Android Studio以及 adb devices 的输出显示工具链可以看到远程设备。然后我尝试在命令行上运行相同的gradle任务,并提供更多信息。所以我输入了:
gradlew connectedAndroidTest --stacktrace --debug

在一堆调试输出中,我找到了更好的错误描述:

[INFO] [org.gradle.api.Project]'AppNameHere:'跳过设备'DEVICE_IP:5555':未知的API等级
 [WARN] [org.gradle.api.Project]
 _FoundCompatibleDevices [TestRunner] FAILED

我在谷歌搜索了这个错误,我偶然发现了打印它的源代码。所以我下载了android的平台工具源代码,以便能够更轻松地浏览它,在我看来,通过读取属性 IDevice.PROP_BUILD_API_LEVEL 来检测API级别,这似乎等于 “ro.build.version.sdk”即可。经过一些谷歌搜索后,我发现它应该在 /system/build.prop 中定义。设备上此文件的内容显示它具有正确的API级别19.实际上,Android Studio中显示相同的API级别,显示当前连接设备的android选项卡(以及它们的logcat输出,打开进程等) 。但是,在某些情况下,这个值似乎没有得到正确的解释。

知道事情可能出错吗?我应该在哪里寻找真正的问题?在Android的工具链,设备上的Android上,我调查过程中出错了什么?

我目前正在使用:
  - Windows 7
  - Android Studio 1.1预览1
  - Android SDK工具24.0.2
  - Android SDK平台工具21
  - Android SDK Build-tools 19.1

5 个答案:

答案 0 :(得分:3)

所以我遇到了同样的问题让我的机器人集成测试在远程jenkins服务器上运行。我最后通过将一个local.properties文件添加到远程android项目根目录并添加sdk路径来修复它。对我来说,它看起来像这样。

   sdk.dir=/usr/local/sdk

然后我得到一个没有连接的设备错误,所以我必须运行

/pathToAndroidSdk/platform-tools/adb start-server

并对我插入的设备进行身份验证。在此过程中我丢失了大部分头发但现在集成测试正常运行。

如果您有任何其他问题,请与我们联系。

答案 1 :(得分:0)

我遇到了同样的错误。我怀疑设备没有完全启动,所以我添加了

while ! "$ANDROID_HOME/platform-tools/adb" shell getprop ro.build.version.sdk; do
  sleep 1
done

这似乎对我有用。

更新:最好像Travis CI的android-wait-for-emulator脚本一样检查init.svc.bootanim。另请参阅Detect when Android emulator is fully booted

答案 2 :(得分:0)

我不得不将USB配置从Charging更改为MIDI。

在三星中,我必须进入配置->开发人员选项-> USB配置。

答案 3 :(得分:0)

在物理Android设备上设置REACT-NATIVE应用程序时遇到了相同的问题。我设法通过将手机开发人员选项中的“选择USB配置”切换为“ RNDIS(USB以太网)”来安装该应用程序。

答案 4 :(得分:0)

出现“始终接受此计算机”的USB调试消息时,请检查“始终接受”。对我来说,它解决了。