Gradle 更改构建配置中的布尔值的任务
Gradle task to change a boolean in build config
我想创建一个非常简单的任务来更改我的 gradle 配置中的布尔值。
我在开发一个 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.defaultConfig.buildConfigField "String", "value", "1"
我认为正确的方法是为 buildTypes 或 productFlavours 定义资源值:
resValue "string", "key", "value"
然后在你的代码中读出它,比如:
getResources().getString(R.string.key);
我想创建一个非常简单的任务来更改我的 gradle 配置中的布尔值。
我在开发一个 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.defaultConfig.buildConfigField "String", "value", "1"
我认为正确的方法是为 buildTypes 或 productFlavours 定义资源值:
resValue "string", "key", "value"
然后在你的代码中读出它,比如:
getResources().getString(R.string.key);