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