Я наконец сделал это.Я нахожусь в среде 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 устанавливает и запускает приложение.