В Eclipse любой способ запустить приложение в более чем одном эмуляторе одновременно? - PullRequest
2 голосов
/ 19 октября 2010

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

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

Я наконец сделал это.Я нахожусь в среде 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  's@$@\\" & apkref &
" \\&" & "@' | sed  's@^@\\" & 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  's@$@\\" & appref & 
" \\&" & "@' | sed  's@^@\\" & sourceref & "@' 
| sed -E -e :a -e '$!N; s/\\n/ /g; ta'" 
do shell script devices

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

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

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

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

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

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

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

2 голосов
/ 19 октября 2010

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

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

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

adb -s <серийный номер> shell am start -a android.intent.action.MAIN -n org.example.app/org.example.app.MainActivity

...