Почему MonkeyRunner.waitForConnection () не работает в моей среде? - PullRequest
3 голосов
/ 12 апреля 2011

Сценарий:

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 - это ip реального устройства, связанного с adb.

Является ли серийный номер реального устройства неправильным, но почему работает команда "adb -s 192.168.6.60:5555 install Douban_Radio.apk"?

Ответы [ 2 ]

5 голосов
/ 02 мая 2011
adb server is out of date. killing...

Я предполагаю, что на вашем компьютере установлено более одного исполняемого файла adb.

Когда вы подключаетесь вручную, вы используете версию adb, которая поддерживает tcp

Monkeyrunner затем использует другую версию adb, обнаруживает, что ваш существующий сервер устарел (что означает либо старый, либоновее) и убивает его.Затем он запускает другую версию, которая не знает о вашем устройстве, подключенном по протоколу tcp, поскольку вы никогда не сообщали об этом (и это может быть не та версия, которая поддерживает протокол tcp).

Это происходит сбой, поскольку нет устройств

После этого вы проверяете, находите сервер adb устаревшим, убиваете его, запускаете свой и все еще не находите устройств ...

попробуйте найти / -name "adb"

и затем запустите версию adb для каждого из них

Не удаляйте также вслепую, переименовывайте его, пока не убедитесь, что используете тот, который работает.

3 голосов
/ 12 апреля 2011

Вторым параметром waitForConnection является серийный номер устройства, в случае эмулятора это 'emulator-<port> ':

device = MonkeyRunner.waitForConnection(5,'emulator-5554')
...