установить и запустить приложение на нескольких устройствах одним щелчком мыши в разделе Eclipse - PullRequest
19 голосов
/ 30 мая 2011

Мне интересно, есть ли способ установить и запустить приложение Android на нескольких устройствах / эмуляторе одним щелчком мыши под Eclipse.

Когда я тестирую макет на нескольких (n) устройствах, ясделав прямо сейчас n раз run-as (на самом деле это сочетание клавиш ctrl-F11), выберите правильное устройство и затем проверьте мой макет на каждом устройстве.

Было бы здорово использовать одну команду для установки и запускана всех устройствах, подключенных к моему компьютеру.

Существует ли такая вещь?

Ответы [ 5 ]

47 голосов
/ 17 августа 2012

Если вы используете eclipse, просто сделайте следующее:

  1. откройте диалоговое окно «Свойства проекта».
  2. в разделе «Параметры запуска / отладки» выберите проект и отредактируйте.
  3. должно появиться другое диалоговое окно, выберите вкладку «target», выберите «Launch on all compical devics / AVD's».

  4. Подайте заявку, и вы должны получить все устройстваустановить при запуске / отладке.

10 голосов
/ 30 мая 2011

Самый простой способ - создать пакетный файл (или скрипт оболочки) с несколькими строками

adb -s SERIAL_NO install workspace/YOUR_PROJECT/bin/YOUR_APK.apk

Убедитесь, что Eclipse настроен на автоматическую сборку проекта. Тогда это не один клик, а закрытие:

  • Ctl-Shift-S, чтобы сохранить все,
  • Alt-TAB для входа в командную строку,
  • Стрелка вверх введите, чтобы перезапустить скрипт.
  • Наслаждайтесь. 5 секунд вершины;)
5 голосов
/ 01 декабря 2011

Я только что закончил сценарий Aleadam совет мне сделать.

Простой цикл на каждом устройстве, подключенном к компьютеру с установкой и запуском.

Скрипт и установка:

#!/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
1 голос
/ 19 апреля 2014

Вот мое решение, позволяющее легко создавать, устанавливать и запускать приложения Android на нескольких устройствах, используя ровно два ярлыка STRG + S и STRG + ALT + F10 ;)

1.Build APK

Обычное поведение сборки Android в Eclipse заключается в том, что APK не будет создан.Но в настройках есть возможность отключить это поведение.

  • Окно -> Настройки -> Android -> Сборка -> Пропускать упаковку и индексацию до экспорта или запуска

=> После отмены выбора этой опции для создания файла APK после изменения кода требуется только Strg + S .

2.Установка и запуск

Чтобы установить и автоматически запустить приложение для нескольких устройств, проще всего использовать командную строку и пакетный скрипт Windows, на мой взгляд:

<!-- 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%

В моем случае у меня есть три устройства.Для более быстрого доступа к одному устройству я использовал следующий код вместо цикла в верхнем коде.Сначала я устанавливаю и запускаю приложение на самом быстром устройстве, а затем на втором и так далее.Я уверен, что есть более эффективные способы вместо использования tail, head и 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 создайте ярлык для этого файла.Щелкните правой кнопкой мыши файл ярлыка и выберите свойства.Там вы можете указать глобальную комбинацию клавиш, например STRG + ALT + F10 .

После изменения некоторого кода в Eclipse, вам нужно только нажать STRG + S изатем STRG + ALT + F10 , и приложение будет наконец запущено на всех устройствах.Да уж!:)

1 голос
/ 31 мая 2011

Вы должны иметь возможность добавить файл Ant XML в ваш проект 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, как в здесь
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...