android - Gradle 任务更改构建配置中的 bool 值

标签 android android-gradle-plugin build.gradle

我想创建一个非常简单的任务来更改我的 gradle 配置中的 bool 值。

我在开发一个可以使用多个配置文件运行的 Android 应用程序,并且对于每个构建都需要在我的代码中指定该应用程序是否必须伪造蓝牙。

我的gradle(相关代码):

def fakeBluetooth = "true"

buildTypes {
    debug {
        minifyEnabled false
        signingConfig android.signingConfigs.debug
        buildConfigField "boolean", "fakeBluetooth", fakeBluetooth
    }
    release {
        minifyEnabled true
        signingConfig android.signingConfigs.release
        buildConfigField "boolean", "fakeBluetooth", fakeBluetooth
    }
}

task noFakeBluetooth {
    fakeBluetooth = "false"
}

我的 java 代码中的使用示例:

if (BuildConfig.fakeBluetooth) {
    processFictiveBluetoothService();
} else {
    // other case
}

命令行使用示例:

./gradlew iDebug noFakeBluetooth

./gradlew iDebug

问题:在这两种情况下,fakeBluetooth 的值始终为“true”(cmd 行中有或没有“noFakeBluetooth”)。

最佳答案

您可以使用项目属性来传递值:

buildTypes {
    debug {
        minifyEnabled false
        signingConfig android.signingConfigs.debug
        buildConfigField "boolean", "fakeBluetooth", fakeBluetooth()
    }
    release {
        minifyEnabled true
        signingConfig android.signingConfigs.release
        buildConfigField "boolean", "fakeBluetooth", fakeBluetooth()
    }
}

def fakeBluetooth() {
    def value = project.getProperties().get("fakeBluetooth")
    return value != null ? value : "true"
}

然后您可以通过以下方式传递属性:

./gradlew iDebug -PfakeBluetooth=true

关于android - Gradle 任务更改构建配置中的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28474958/

相关文章:

android - 在三个 Activity 中使用相同的数据

android - 在 Kotlin 中处理推送通知

android - 更新到 Android Studio 3.6 后,应用程序在运行时崩溃

java - gradle:如何将 proguard 与工件连接/添加自定义工件?

java - Gradle:Jar Task不包括扩展名未知的文件

android - Build.Gradle 中的库版本错误

android - 切换到 Gradle : why do I have to keep custom views from being obfuscated?

android - 如何在Docker镜像中填充Gradle缓存?

android - 在 android 的 build.gradle 中添加位置服务时出现问题

android - 在框架布局中访问动态添加的谷歌地图 fragment