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

标签 android android-gradle-plugin gradle-experimental

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

目前,我正在预构建之前运行的自定义任务中执行此操作,类似于 this solution .此时有什么方法可以检测 CPU 架构吗?

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

preBuild.dependsOn customTask

我正在使用 experimental plugin 0.7.0-beta3.

谢谢

最佳答案

您可以使用 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

关于android - 从 Gradle 构建文件中检测 Android 部署目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36728785/

相关文章:

Android Vector Asset Studio : Import SVG and use ID as Name

android - 如何在android上序列化ArrayList

android - 类路径中的某些运行时 JAR 文件具有不兼容的版本。考虑从类路径中删除它们

android - Gradle实现/API没有获得子依赖项

android - 将项目 API 级别 21 降低到 19 时出现 NDK UnsatisfiedLinkError

android - 从抽屉导航中打开新 fragment 时卡顿

android - flutter :FCM 计数通知数

java - 使用 RenderScript 库编译时出现错误 : llvm-rs-cc. exe'' 以非零退出值完成 -1073741515

android - 'build' 中的 'main' 不能应用于 '(groovy.lang.closure'

gradle - 如何在模型外部访问model.android属性