首先声明,我对Gradle非常陌生,如果这个问题已经有答案,我表示歉意。
我正在开发一款Android应用程序,使用API密钥来访问第三方工具。根据应用程序的flavor和build type,需要使用不同的API密钥。
以下是我尝试完成的基本概述:
android {
defaultConfig {
manifestPlaceholders = [ apiKey:"DEBUG_KEY" ]
}
buildTypes{
debug{
// Some debug setup
}
release{
// Some release setup
}
}
productFlavors {
// List of flavor options
}
productFlavors.all{ flavor->
if (flavor.name.equals("someFlavor")) {
if (buildType.equals("release")) {
manifestPlaceholders = [ apiKey:"RELEASE_KEY_1" ]
} else {
manifestPlaceholders = [ apiKey:"DEBUG_KEY" ]
}
} else {
if (buildType.equals("release")) {
manifestPlaceholders = [ apiKey:"RELEASE_KEY_2" ]
} else {
manifestPlaceholders = [ apiKey:"DEBUG_KEY" ]
}
}
}
}
到目前为止,manifestPlaceholders
语句在一个非常简单的情况下有效,但我不知道如何在productFlavors块内引用buildType,以便我可以将其用作条件。
android.applicationVariants.all { variant -> def mergedFlavor = variant.getMergedFlavor() if (variant.buildType.name.equals("debug") && variant.flavorName.equals("demo")) { mergedFlavor.manifestPlaceholders = [appPackageId: "myPackage1"] } }
- Aleksander Niedziolko