Почему MonkeyRunner.waitForConnection() не работает в моей среде?

Сценарий:

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"?


person jobsyang    schedule 12.04.2011    source источник


Ответы (2)


adb server is out of date. killing...

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

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

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

Это не удается, потому что нет устройств

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

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

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

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

person Chris Stratton    schedule 02.05.2011

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

device = MonkeyRunner.waitForConnection(5,'emulator-5554')
person Diego Torres Milano    schedule 12.04.2011
comment
Спасибо за помощь, но проблема не решена. Информация обновлена, посмотрите, пожалуйста, большое спасибо. - person jobsyang; 13.04.2011
comment
в чем проблема с использованием «эмулятора-5554» или любого другого серийного номера вашего устройства? - person Diego Torres Milano; 13.04.2011