Устанавливать и запускать приложение на нескольких устройствах одним щелчком мыши по eclipse
Мне интересно, есть ли способ установить и запустить приложение Android на нескольких устройствах/эмуляторе одним щелчком мыши в Eclipse.
Когда я тестирую макет на нескольких (n) устройствах, которые я делаю прямо сейчас n раз run-as (фактически сокращенный ctrl-F11), выберите правильное устройство, а затем проверьте мой макет на каждом устройстве.
Было бы здорово использовать одну команду для установки и запуска на всех устройствах, подключенных к моему компьютеру.
Существует ли такая вещь?
Ответы
Ответ 1
Самый простой способ - иметь командный файл (или оболочку script) с несколькими строками
adb -s SERIAL_NO install workspace/YOUR_PROJECT/bin/YOUR_APK.apk
Убедитесь, что Eclipse настроен на автоматическое создание проекта. Затем, это не один клик, но закрыть:
- Ctl-Shift-S, чтобы сохранить все,
- Alt-TAB, чтобы перейти в командную строку,
- стрелка вверх, чтобы перезапустить script.
- Наслаждайтесь. 5 секунд вершин;)
Ответ 2
Если вы используете eclipse, просто выполните ниже:
- откройте диалоговое окно свойств проекта.
- в разделе "Параметры запуска/отладки", выберите проект и отредактируйте его.
-
появится другое диалоговое окно, выберите вкладку "цель", выберите "Запуск на всех совместимых devics/AVD".
-
Применить, и вы должны установить все устройства при запуске/отладке.
Ответ 3
Я только что закончил script Aleadam, чтобы помочь мне.
Простой цикл на каждом устройстве, подключенном к компьютеру с установкой и запуском.
Script иinstall:
#!/bin/bash
if [ $# -lt 3 ] ;then
echo "usage $0 pathToTheFileToInstall packagename fullPackageActivityName"
exit 1
fi
FILEPATH=$1
PACKAGE=$2
ACTIVITYNAME=$3
APK=`ls $FILEPATH/*.apk`
installOnSingleDevice(){
echo "Installing on $DEVICE -------"
echo "adb -s $1 install -r $APK"
adb -s $1 install -r $APK
echo "adb -s $1 shell am start -n $2/$3"
adb -s $1 shell am start -n $2/$3
echo "--------------------------"
}
if [ $? -eq 0 ] ;then
adb devices | grep device | grep -v attached | cut -f 1 > tmpfile
while read line;
do
installOnSingleDevice $line $PACKAGE $ACTIVITYNAME&
done < tmpfile
rm tmpfile
else
echo "No apk at this path (${FILEPATH})"
fi
Пример использования:
andinstall ~/workspace/myapp/bin/ fr.openium.myapp fr.openium.myapp.activity.ActivitySplash
Ответ 4
Вы должны добавить XML файл Ant в свой проект Eclipse и заполнить его Ant задачами, которые могут запускать внешнюю программу из командной строки. Вероятно, у вас должен быть отдельный элемент задачи для каждого устройства, которое вы хотите запустить, а затем родительская задача, содержащая все из них.
Затем добавьте один шаг настраиваемого строителя в проект Eclipse, выбрав Ant в качестве строителя и указывая на ранее добавленный файл XML (см. здесь)
Я не большой эксперт в Ant, но в какой-то момент мне нужно было добавить настраиваемую задачу для сборки Jar из кода проекта из Eclipse, чтобы я мог запускать ее каждый раз, когда мне это нужно ( например здесь). Эта процедура работала достаточно хорошо.
Задача Ant, которая должна выполнить для вас: Exec: http://ant.apache.org/manual/Tasks/exec.html. Вы можете посмотреть http://ant.apache.org/manual/using.html для простого запуска.
Ваш XML может быть чем-то вроде следующего (я еще не пробовал):
<?xml version="1.0"?>
<project name="...use same name as your project for simplicity..." default="runmultidevices">
<property name="myapk" location="workspace/YOUR_PROJECT/bin/YOUR_APK.apk"/>
<target name="runmultidevices" description="Run on multiple devices" depends="rundevice1 rundevice2">
</target>
<target name="rundevice1" description="Run on device 1">
<exec executable="adb">
<arg line="-s SERIAL_NO_1 install ${myapk}" />
</exec>
</target>
<target name="rundevice2" description="Run on device 2">
<exec executable="adb">
<arg line="-s SERIAL_NO_2 install ${myapk}" />
</exec>
</target>
</project>
Чтобы не писать вручную местоположение пакета для каждого проекта, похоже, не существует такой большой интеграции между Eclipse и Ant. Вы можете попробовать следующие предложения:
- используйте собственное свойство Ant
${basedir}
, как в здесь
- передать переменную Eclipse в качестве дополнительного параметра при вызове Ant, как в здесь:
-Dworkspace_loc=${workspace_loc}
- получить доступ к файлу Eclipse
.project
из Ant, используя специальный механизм синтаксического анализа XML, как в здесь
Ответ 5
Вот мое решение для простой сборки, установки и запуска приложения Android на нескольких устройствах с помощью двух быстрых клавиш STRG + S и STRG + ALT + F10;)
1. Сборка APK
Нормальное поведение Android Build в Eclipse заключается в том, что APK не будет создан. Но в настройках есть возможность отключить это поведение.
- Окно → Настройки → Android → Сборка → Пропустить упаковку и удаление до экспорта или запуска
= > После отмены этой опции для создания файла APK после изменения кода требуется только Strg + S.
2. Установка и запуск
Для установки и автоматического запуска приложения для нескольких устройств самый простой способ - использовать командную строку и пакет Windows script, на мой взгляд:
<!-- language: Batch script -->
:: This five lines are used to minimize the
:: command lines directly after the start
if not "%minimized%"=="" goto :minimized
set minimized=true
start /min cmd /C "%~dpnx0"
goto :EOF
:minimized
:: Path to the ADB and to the APK file
@set ADB="D:/Android/sdk/platform-tools/adb.exe"
@set APK="D:/workspace_android/SomeApp/bin/SomeApp.apk"
:: AndroidManifest.xml: <manifest package="com.example.appname">
:: The launching activity: <activity android:name=".activities.HomeActivity">
@set ACTIVITY=at.example.appname/.activities.HomeActivity
:: Install APK on all devices
%ADB% devices | tail -n +2 | cut -sf 1 | xargs -iX %ADB% -s X install -r %APK%
:: Launch App on all devices
%ADB% devices | tail -n +2 | cut -sf 1 | xargs -iX %ADB% -s X shell am start -a android.intent.action.MAIN -n %ACTIVITY%
В моем случае у меня три устройства. Для более быстрого доступа к одному устройству я использовал следующий код вместо цикла в верхнем коде. Во-первых, я устанавливаю и запускаю приложение на самом быстром устройстве, а затем на втором и так далее. Я уверен, что есть лучшие способы вместо использования хвоста, головы и xargs, но я не так много знаю о пакетных файлах, но он просто работает.;)
<!-- language: Batch script -->
:: NEXUS 5
:: This command reinstalls the APK on the Nexus 5 device
%ADB% devices | tail -n +2 | head -n +1 | cut -sf 1 | xargs -iX %ADB% -s X install -r %APK%
:: This command launch the application on the Nexus 5 device
%ADB% devices | tail -n +2 | head -n +1 | cut -sf 1 | xargs -iX %ADB% -s X shell am start -a android.intent.action.MAIN -n %ACTIVITY%
:: Galaxy Tab
%ADB% devices | tail -n -2 | cut -sf 1 | xargs -iX %ADB% -s X install -r %APK%
%ADB% devices | tail -n -2 | cut -sf 1 | xargs -iX %ADB% -s X shell am start -a android.intent.action.MAIN -n %ACTIVITY%
:: Optimus 3D
%ADB% devices | tail -n +3 | head -n +1 | cut -sf 1 | xargs -iX %ADB% -s X install -r %APK%
%ADB% devices | tail -n +3 | head -n +1 | cut -sf 1 | xargs -iX %ADB% -s X shell am start -a android.intent.action.MAIN -n %ACTIVITY%
После пакета Windows script создайте ярлык этого файла. Щелкните правой кнопкой мыши ярлык и выберите свойства. Там вы можете указать глобальную комбинацию клавиш STRG + ALT + F10.
После изменения кода в Eclipse вам нужно нажать STRG + S, а затем STRG + ALT + F10, и приложение будет, наконец, запущено на всех устройствах. Да!:)