在eclipse下单击一下即可在多个设备上安装并运行应用程序

我想知道是否有一种方法来安装和运行Android应用程序在多个设备/模拟器与Eclipse下单击一下。

当我在多个(n)设备上testing布局时,我现在正在执行n次运行(事实上按Ctrl-F11快捷方式),select正确的设备,然后检查每个设备上的布局。

使用单个命令在连接到我的计算机的所有设备上安装和启动将是一件好事。

有这样的事情吗?

Solutions Collecting From Web of "在eclipse下单击一下即可在多个设备上安装并运行应用程序"

最简单的方法是用多行创build一个batch file(或shell脚本)

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

确保Eclipse设置为自动构build项目。 然后,这不是一键,而是closures:

  • Ctl-Shift-S保存全部,
  • Alt-TAB进入命令提示符,
  • 向上箭头键入重新运行脚本。
  • 请享用。 5秒钟;)

如果你使用eclipse,只需做到以下几点:

  1. 打开“项目属性”对话框。
  2. 在“运行/debugging设置”下,select您的项目并编辑。
  3. 应popup另一个对话框,select“目标”选项卡,select“在所有兼容的设备/ AVD上启动”。

  4. 应用,当运行/debugging时应该安装所有的设备。

我刚刚完成剧本Aleadambuild议我去做。

通过安装和启动连接到计算机的每个设备上的简单循环。

脚本和安装:

 #!/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 

您应该能够将一个Ant XML文件添加到您的Eclipse项目中,并使用可以从命令行运行外部程序的Ant任务来填充它。 可能您应该为每个要运行的设备都有一个单独的任务项目,然后是包含所有设备的父任务。

然后将一个自定义构build器步骤添加到Eclipse项目中,selectAnt作为构build器并指向先前添加的XML文件(请参阅此处 )

我不是Ant方面的专家,但是在某些时候,我需要添加一个自定义的任务来从Eclipse内部的项目代码中构build一个Jar,这样我就可以在需要的时候运行它(就像这里 )。 这个程序工作得很好。

应该为你做的Ant任务是Exec: http : //ant.apache.org/manual/Tasks/exec.html 。 你可能想看看http://ant.apache.org/manual/using.html是一个简单的入门者&#x3002;

你的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之间似乎没有这么好的集成。 您可以尝试以下build议:

  • 在这里使用本地Ant ${basedir}属性
  • 在调用Ant时将一个Eclipsevariables作为附加parameter passing,如下所示: -Dworkspace_loc=${workspace_loc}
  • 使用特定的XMLparsing工具从Ant中访问Eclipse .project文件,如下所示

这里是我的解决scheme,可以在多个设备上轻松构build,安装和启动Android应用程序,只需两个快捷方式STRG + SSTRG + ALT + F10 ;)

1.构buildAPK

Eclipse中的Android Build的正常行为是,APK不会被创build。 但是在偏好设置中是禁止这种行为的选项。

  • 窗口 – >首选项 – > Android – >生成 – >跳过打包和dexing,直到出口或启动

=>取消select该选项后,在代码更改后,只需要一个Strg + S来创buildAPK文件。

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,但我不太了解batch file,但它只是运行。 ;)

 <!-- 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批处理脚本后,创build该文件的快捷方式。 右键单击该快捷方式文件并select属性。 在那里您可以指定全局快捷键,例如STRG + ALT + F10

在Eclipse中更改了一些代码后,只需按STRG + S ,然后STRG + ALT + F10 ,应用程序将最终在所有设备上启动。 是啊! 🙂