ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android – 为什么MonkeyRunner.waitForConnection()在我的环境中不起作用?

2019-07-26 11:26:44  阅读:138  来源: 互联网

标签:android android-emulator monkeyrunner


脚本:

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
device = MonkeyRunner.waitForConnection(5,'192.168.6.60:5555')
device.installPackage('Douban_Radio.apk')

在它运行之前:

~/android-sdk-linux_86/tools$adb connect 192.168.6.60:5555
connected to 192.168.6.60:5555
~/android-sdk-linux_86/tools$adb devices
List of devices attached 
192.168.6.60:5555   device

monkeyrunner的输出:

~/android-sdk-linux_86/tools$./monkeyrunner monkeyrunnerTest.py 
110412 18:12:35.017:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] Script terminated due to an exception
110412 18:12:35.017:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]Traceback (most recent call last):
  File "/home/jobsyang/android-sdk-linux_86/tools/monkeyrunnerTest.py", line 6, in <module>
    device.installPackage('Douban_Radio.apk')
AttributeError: 'NoneType' object has no attribute 'installPackage'

……

运行后:

~/android-sdk-linux_86/tools$adb devices
adb server is out of date.  killing...
* daemon started successfully *
List of devices attached 

我只是不知道为什么MonkeyRunner.waitForConnection不起作用并杀死与设备的adb连接?请帮助我,非常感谢!

我在本地环境中启动AVD,连接的设备是:

~/android-sdk-linux_86/tools$adb devices
List of devices attached 
emulator-5554   device
192.168.6.60:5555   device

使用adb命令是正确的:

~/android-sdk-linux_86/tools$adb -s emulator-5554 install Douban_Radio.apk 
859 KB/s (287518 bytes in 0.326s)
    pkg: /data/local/tmp/Douban_Radio.apk
Success

~/android-sdk-linux_86/tools$adb -s 192.168.6.60:5555  install Douban_Radio.apk 
2108 KB/s (287518 bytes in 0.133s)
    pkg: /data/local/tmp/Douban_Radio.apk
Success

使用脚本中的MonkeyRunner.waitForConnection

MonkeyRunner.waitForConnection(5,’emulator-5554′)有效,
但是MonkeyRunner.waitForConnection(5,’192.168.6.60:5555′)仍然无效.

PS:192.168.6.60是与adb连接的真实设备的ip.

真实设备的serialNumber是错误的,但为什么命令“adb -s 192.168.6.60:5555 install Douban_Radio.apk”有效?

解决方法:

adb server is out of date. killing...

我的猜测是你的机器上有多个adb可执行文件.

手动连接时,您使用的是支持tcp的adb版本

Monkeyrunner然后使用不同版本的adb,发现您现有的服务器已过期(这意味着更旧或更新)并将其杀死.然后它启动一个不同的版本,它不知道你的tcp连接设备,因为你从来没有说过它(它可能不是支持tcp的版本).

这会失败,因为没有设备

之后,你检查,发现adb服务器过时,杀了它,启动它,仍然找不到设备……

尝试查找/ -name“adb”

然后在每个上运行adb版本

不要盲目地删除它们,重命名它,直到你确定你使用的是有效的.

标签:android,android-emulator,monkeyrunner
来源: https://codeday.me/bug/20190726/1543402.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有