如何在Android Studio的构建过程中了解Android设备ID

时间:2016-03-18 17:38:59

标签: android-studio android-gradle

我一直在使用Android Studio开发Android家庭应用。 该应用程序是一种特殊的应用程序,我需要在安装apk文件之前使用adb shell命令修改android设备。 为了存档,我在build.gradle文件中编写了一个gradle任务,然后执行一个bash脚本文件。 除非只连接了一个设备,否则这种方法很好。

然而,当连接多个Android设备时,shell脚本不起作用,因为我无法指定android设备ID。

问题是如何使用Android Studio在build.gralde文件中获取Android设备ID?

的build.gradle

task clearHome(type: Exec) {

    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())
    def sdkDir = properties.getProperty('sdk.dir')

    // I'd like to know <android device id> that I selected using Android Stdio.
    commandLine file('../beforeInstall.sh').absolutePath, sdkDir <android device id>
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn clearHome
}

beforeInstall.sh

#!/bin/bash

ADB=$1/platform-tools/adb
ADB_SHELL="$ADB -s $2 shell"

$ADB_SHELL pm enable com.android.launcher
$ADB_SHELL am start -n com.android.launcher/com.android.launcher2.Launcher

1 个答案:

答案 0 :(得分:0)

不确定我是否理解了这个问题,但是如果您通过命令行运行gradle脚本,则始终可以将属性传递给它。 即:

gradle somegradletask -P**propertyDeviceId=123456789**

您只需先从adb shell获取Id,然后将其传递给gradle脚本。 然后,在gradle脚本中使用 propertyDeviceId

androidDeviceId = propertyDevicecId;
commandLine file('../beforeInstall.sh').absolutePath, sdkDir <androidDeviceId>

快乐编码(或黑客);)