从Gradle构建文件中检测Android部署目标

时间:2016-04-19 20:27:52

标签: android android-gradle gradle-experimental

我希望通过调用外部工具来扩展我的gradle构建。问题是我需要提供当前目标的当前CPU架构,例如armeabiarm64-v8a,如果用户已选择部署到物理设备。我无法在gradle构建文件中找到确定此信息的方法。

目前,我在preBuild之前运行的自定义任务中执行此操作,类似于this solution。有没有办法在此时检测CPU架构?

task customTask(type: Exec) {
    commandLine "myTool.exe", "-architecture=$something"
}

preBuild.dependsOn customTask

我正在使用experimental plugin 0.7.0-beta3。

由于

1 个答案:

答案 0 :(得分:2)

您可以使用ADB shell命令获取所连接设备的CPU架构(ABI):

adb shell getprop ro.product.cpu.abi

对于Nexus 5,这将返回armeabi-v7a作为示例。

现在我们必须将该命令包装成gradle方法:

def getDeviceAbi() {
    return "adb shell getprop ro.product.cpu.abi".execute().text.trim()
}

然后你可以简单地从你的任务中调用这个方法:

task customTask(type: Exec) {
    commandLine "myTool.exe", "-architecture=" + getDeviceAbi()
}
preBuild.dependsOn customTask