在Eclipse中,是否可以同时在多个模拟器中启动应用程序?

时间:2010-10-19 13:37:44

标签: android eclipse emulation adt

在测试Android布局时,我经常从Eclipse(使用ADT)构建三个不同的模拟器,因此我必须运行三次然后选择每个模拟器。是否有任何配置或插件允许我按Run一次并且应用程序在所有三个中启动?

2 个答案:

答案 0 :(得分:2)

我希望我的机器足够强大,可以同时运行3个仿真器! :)

我怀疑Android开发工具可以为你做到这一点......你可能得到的最近的是脚本。 “adb devices”会为你提供一个模拟器实例列表,然后你需要在每个实例上迭代运行这两个命令的列表:

adb -s < serial-number> 安装app.apk

adb -s < serial-number> shell am start -a android.intent.action.MAIN -n org.example.app/org.example.app.MainActivity

答案 1 :(得分:2)

我终于做到了。我在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

正如您所看到的,我只是运行一些shell命令。实现sed的这种特定连接是一种痛苦,但却是一种很好的学习经历。

第一个shell脚本将在通过adb设备找到的所有设备中安装apk。如果应用程序已经存在,adb会因-r标志重新安装它。我将命令连接到&所以每个命令都在后台运行,同时安装和运行。以前我尝试将命令与&&进行连接,因此每个命令都等待轮到它,结果是一个慢得多的过程。

第二个shell脚本将在所有设备中运行该应用程序。

我确信这可以被对sed有更多了解的人简化,但它对我来说很有用。

受到这种小经验的启发,我继续创建Automator应用程序来执行此操作并在每个设备上运行adb logcat(因此当我从一个logcat中ctrl + c时,它会启动下一个)。

我甚至创建了运行此Automator应用程序的服务,但Mac OS X中的Eclipse不支持服务。解决方法是将应用程序作为外部工具运行。

为了获得额外的味道,我在Automator应用程序中添加了Growl通知,告诉我adb正在安装和运行应用程序。