我试图在通过以太网连接的设备(非手持设备)上运行测试,但我看到的只是失败。我使用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
答案 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调试消息时,请检查“始终接受”。对我来说,它解决了。