是否可以在Gradle中为两种产品风格创建两个 .properties 文件?
我正在构建一个有两种风格的Android应用程序,我希望它们具有单独的属性,但是在这里有覆盖变量的问题:
productFlavors {
flavor1 {
customProperties = getCustomProperties("flavor1.properties");
}
flavor2 {
customProperties = getCustomProperties("flavor2.properties");
}
}
我的 customProperties 变量始终从 flavor2 属性中获取值,即使我构建了 flavor1 。
我做错了什么? :)
upd:defaultConfig:
defaultConfig {
minSdkVersion 17
targetSdkVersion 22
// Enabling multidex support.
multiDexEnabled true
}
答案 0 :(得分:1)
我已经使用过类似的东西:
flavorDimensions "default"
productFlavors {
stand {
def standPropsFile = file("${project.projectDir}/../stand.properties")
Properties standProps = new Properties()
if (standPropsFile.canRead()) {
standProps.load(new FileInputStream(standPropsFile))
}
manifestPlaceholders = standProps
applicationId = manifestPlaceholders["APP_ID"]
}
google {
def standPropsFile = file("${project.projectDir}/../google.properties")
Properties standProps = new Properties()
if (standPropsFile.canRead()) {
standProps.load(new FileInputStream(standPropsFile))
}
manifestPlaceholders = standProps
applicationId = manifestPlaceholders["APP_ID"]
}
}
manifestPlaceholders-只是Map
答案 1 :(得分:-1)
您还应该更改构建变体并选择正确的风格,以使所需的风格生效。
或者,如果您在属性文件中只有几个字段,并且只想为每种风格添加不同的值:您可以使用BuildConfigFields,如下所示:
buildConfigField 'String', 'FIELD1', '"value1"'
buildConfigField 'String', 'FIELD2', '"value2"'
buildConfigField "String", "FIELD3", "value2"
可以使用BuildConfig类在整个项目的任何地方访问它们,如下所示:
BuildConfig.FIELD1
BuildConfig.FIELD2
BuildConfig.FIELD3