Почему 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 в локальном env, а подключенные устройства:

 ~/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.

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

 adb server is out of date. killing... 

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

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

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

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

Впоследствии вы проверяете, находите сервер adb устаревшим, убиваете его, запускаете и не можете найти никаких устройств …

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

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

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

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

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