我已经在 SO 上搜索了一段时间,但找不到明确的答案。
我最近为我的开发机器购买了一个 7 端口 USB 集线器,上面有 7 个不同的 Android 设备。
这样做主要是为了让所有东西都充电,但我也试图找出是否可以配置 Maven 甚至 DDMS)来识别设备并通过集线器一次部署到所有设备?
当前版本的 Android SDK 不支持同时在多个连接的设备上安装 apk。这是硬性限制,因此目前唯一的解决方法是迭代连接的设备并为每个设备发出安装命令。
如果您查看android-maven-plugin 文档,您会看到 android:deploy 目标中有一个有趣的参数,您可以在 pom.xml 中指定:
设备:
按序列号指定要连接的设备。特殊值“usb”和“emulator”也有效,分别用于选择唯一的 USB 连接设备或唯一运行的仿真器。
- 类型:java.lang.String
- 要求:否
- 表达式:${android.device}
好吧,文档声称它将安装 apk 到唯一连接的设备。我自己测试过,如果连接了多个设备,它也可以工作。
示例 pom.xml:
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<sdk>
<platform>13</platform>
</sdk>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
<!-- Install apk to multiple attached devices -->
<device>usb</device>
</configuration>
</plugin>
通过运行示例日志mvn android:deploy
:
[INFO] Waiting for initial device list from the Android Debug Bridge
[INFO] Found 2 devices connected with the Android Debug Bridge
[INFO] android.device parameter set to usb
[INFO] Device 0123456789abcd_samsung_GT-I9100 found.
[INFO] Successfully uninstalled com.company.app from 0123456789abcd_samsung_GT-I9100
[INFO] Device 0123456789efg_HTC_HTCDesire found.
[INFO] Successfully uninstalled com.company.app from 0123456789efg_HTC_HTCDesire
[INFO] Found 2 devices connected with the Android Debug Bridge
[INFO] android.device parameter set to usb
[INFO] Device 0123456789abcd_samsung_GT-I9100 found.
[INFO] Successfully installed C:\workspace\my-app\target\app-1.0.0-SNAPSHOT.apk to 0123456789abcd_samsung_GT-I9100
[INFO] Device 0123456789efg_HTC_HTCDesire found.
[INFO] Successfully installed C:\workspace\my-app\target\app-1.0.0-SNAPSHOT.apk to 0123456789efg_HTC_HTCDesire
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
如果您想知道 android-maven-plugin 是如何实现它的,请在此处查看源代码。
正如 yorkow 正确提到的那样,Android Maven 插件支持多个连接的设备和模拟器。
事实上,它对所有连接的设备和仿真器(无参数)、所有连接的设备(设备参数设置为 usb)、所有仿真器(设备参数设置为仿真器)或特定设备(设备参数设置为设备)。
为了使用该插件,我建议查看Android Maven 插件网站以及Maven: The Complete Reference 一书中关于使用它进行 Android 开发的章节
要记住的主要事情是,此参数和多设备支持适用于所有设备交互目标(部署、取消部署、重新部署、运行、仪器、拉取和推送),因此您可以例如在多个设备上运行所有测试或也将文件推送到所有连接的设备。
此外,根据操作系统,您需要将 USB 制造商标识添加到 udev 规则或其他设置中。在开发网站上查看更多信息。
尝试
adb devices
首先,然后使用 Android Maven 插件目标来查看它可以检测到什么
mvn android:devices
PS:我是插件的核心提交者和链接书内容的作者。