groovy Android gradle插件如何选择所有设备?

4zcjmb1e  于 2023-03-01  发布在  Android
关注(0)|答案(2)|浏览(183)

我正在编写一个需要使用adb命令的小型gradle插件。我的问题是installDebug任务如何知道所有设备?默认情况下,它将安装在所有设备上。我找到了installTask,但没有用于指定设备的-s参数。
他们是如何在Android gradle plugin中做到这一点的?
附加问题:在Android Studio中,我可以选择一个特殊设备,但如何从gradle脚本中得知这一点?

qfe3c7zg

qfe3c7zg1#

InstallTask不存在于最新的源代码中。使用InstallVariantTask代替它。正如您从其源代码中所看到的,它检查ANDROID_SERIAL环境变量以选择特定设备,如果该变量不存在,则针对所有兼容设备运行安装任务(uninstallconnectedAndroidTest任务也是如此)。
额外答案:这是不可能的AFAIK. Android Studio does not install/launch通过gradle安装应用程序。在.idea/workspace.xml文件中,您会发现ANDROID_EXTENDED_DEVICE_CHOOSER_SERIALS属性,该属性会在部署APK后的某个时间点更新,但在gradle脚本运行期间此信息不可用。

z9gpfhce

z9gpfhce2#

在最新版本的Android Studio中,.idea/deploymentTargetDropDown.xml将包含一个可能目标的列表、最近 * 选择 * 的目标以及选择该目标的 * 时间 *

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="deploymentTargetDropDown">
    <runningDeviceTargetSelectedWithDropDown>
      <Target>
        <type value="RUNNING_DEVICE_TARGET" />
        <deviceKey>
          <Key>
            <type value="SERIAL_NUMBER" />
            <value value="some_serial_number" />
          </Key>
        </deviceKey>
      </Target>
    </runningDeviceTargetSelectedWithDropDown>
    <timeTargetWasSelectedWithDropDown value="2023-02-22T12:03:45.955233Z" />
 </component>

同一文件也存储在settings directory
它看起来像是一个实现细节,对于任何关键使命都不值得依赖,但是一旦您做出选择,它就会被填充,这使得它对部署相关的脚本非常有用

相关问题