Android studio 在Android Studio的构建过程中如何知道Android设备id

Android studio 在Android Studio的构建过程中如何知道Android设备id,android-studio,android-gradle-plugin,Android Studio,Android Gradle Plugin,我一直在使用Android Studio开发一个Android家庭应用程序。 该应用程序是一种特殊的应用程序,在安装apk文件之前,我需要用adb shell命令修改android设备。 为了将其归档,我在build.gradle文件中编写了一个gradle任务,然后执行一个bash脚本文件。 这种方法很好,除非只连接了一个设备 但是,当连接多个android设备时,shell脚本无法工作,因为我无法指定android设备id 问题是如何使用android Studio在build.gralde

我一直在使用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
}

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

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

androidDeviceId = propertyDevicecId;
commandLine file('../beforeInstall.sh').absolutePath, sdkDir <androidDeviceId>
androidDeviceId=PropertyDeviceID;
命令行文件('../beforeInstall.sh')。绝对路径,sdkDir

快乐编码(或黑客);)

您是否尝试过
adb shell sqlite3/data/data/com.android.providers.settings/databases/settings.db“从安全位置选择值,其中name='android_id'”
连接的设备始终不相同。您是否重置了设备?您可能会误解。安卓设备不是问题。我想知道我在Android studio的目标选择对话框中选择了哪种设备。你有没有想出一个合适的解决方案?嗯,设备ID总是不同的。我想知道我在Android studio的目标选择对话框中选择了哪个设备。
gradle somegradletask -P**propertyDeviceId=123456789**
androidDeviceId = propertyDevicecId;
commandLine file('../beforeInstall.sh').absolutePath, sdkDir <androidDeviceId>