2010-10-19 2 views
2

При тестировании макетов Android я постоянно строил три разных эмулятора от Eclipse (с ADT), поэтому я должен запускать три раза, а затем выбирать каждый из них. Есть ли какая-либо конфигурация или плагин, который позволяет мне нажать Run один раз, и приложение запускается во всех трех?В Eclipse можно каким-либо образом запустить приложение в нескольких эмуляторах одновременно?

ответ

2

Я наконец-то сделал это. Я нахожусь в среде Mac, поэтому я использовал Applescript для упрощения установки некоторых переменных, но это можно сделать прямо с терминала.

set apkref to "install -r /path/to/your/app.apk" 
set appref to "shell am start -a android.intent.action.MAIN -n 
com.example.app/com.example.app.MainActivity" 
set sourceref to "/path/to/android/tools/" 

set devices to do shell script sourceref & "adb devices | grep \"[device]$\" | 
sed 's/.device/\\ /' | sed 's/^/\\adb -s /' | sed '[email protected][email protected]\\" & apkref & 
" \\&" & "@' | sed '[email protected]^@\\" & sourceref & "@' 
| sed -E -e :a -e '$!N; s/\\n/ /g; ta'" 
do shell script devices 

set devices to do shell script sourceref & "adb devices | grep \"[device]$\" | 
sed 's/.device/\\ /' | sed 's/^/\\adb -s /' | sed '[email protected][email protected]\\" & appref & 
" \\&" & "@' | sed '[email protected]^@\\" & sourceref & "@' 
| sed -E -e :a -e '$!N; s/\\n/ /g; ta'" 
do shell script devices 

Как вы можете видеть, я просто запускаю некоторые команды оболочки. Достижение этой специфической конкатенации sed было болью, но отличным опытом обучения.

Первый скрипт оболочки установит apk во всех устройствах, найденных через устройства adb. Если приложение уже существует, adb переустанавливает его из-за флага -r. Я объединяю команды с &, поэтому каждая команда запускается в фоновом режиме, устанавливая и запуская одновременно. Раньше я пытался объединить команды с & &, поэтому каждая команда ждала своего хода, и результат был намного медленнее.

Второй скрипт оболочки запускает приложение на всех устройствах.

Я уверен, что это может быть упрощено кем-то с большим знанием sed, но оно отлично работает для меня.

Вдохновленный этим небольшим опытом, я пошел вперед и создал приложения Automator для этого и запустил logcat adb на каждом устройстве (поэтому, когда я ctrl + c из одного logcat, он запускает следующий).

Я зашел так далеко, что создал Службы для запуска этих приложений Automator, однако Eclipse в Mac OS X не поддерживает службы. Обходной путь заключался в том, чтобы запускать приложения в качестве внешних инструментов.

Для дополнительного аромата я добавил уведомления Growl в своих приложениях Automator, чтобы сообщить мне, когда adb устанавливает и запускает приложение.

2

Мне жаль, что у меня не было достаточно мощной машины, чтобы запустить сразу 3 эмулятора! :)

Я сомневаюсь, что средства разработки для Android могут сделать это за вас ... ближайший, возможно, вы получите, чтобы что-то скриптировать. «ADB устройства» получит вам список экземпляров эмулятора, а затем вы просто должны повторять этот список выполнить эти две команды на каждый:

ADB -s < серийный номер > установить app.apk

ADB -s < серийный номер > оболочка утра начать -a -n android.intent.action.MAIN org.example.app/org.example.app.MainActivity

+0

Спасибо, я потратил последние 3 часа, создав Applescript, смешанный с некоторыми командами терминала, и смог достичь этого. Я отправлю его, когда закончу его полировку. –