Свойства каждого вкуса продукта в Gradle
Можно ли создать два файла .properties для двух вариантов продукта в Gradle?
Я создаю приложение для Android с двумя вариантами, и я хочу иметь отдельные свойства для них, но у меня есть проблемы с перезаписанной переменной здесь:
productFlavors {
flavor1 {
customProperties = getCustomProperties("flavor1.properties");
}
flavor2 {
customProperties = getCustomProperties("flavor2.properties");
}
}
Моя переменная customProperties всегда получает значения из свойств flav2, даже я строю flav1.
Что я делаю неправильно?:)
upd: defaultConfig:
defaultConfig {
minSdkVersion 17
targetSdkVersion 22
// Enabling multidex support.
multiDexEnabled true
}
1 ответ
Вам также следует изменить вариант сборки и выбрать правильный вариант, чтобы применить каждую конфигурацию для нужного варианта.
В качестве альтернативы, если у вас есть только несколько полей в файле свойств и вы просто хотите разные значения для каждого варианта: вы можете использовать BuildConfigFields следующим образом:
buildConfigField 'String', 'FIELD1', '"value1"'
buildConfigField 'String', 'FIELD2', '"value2"'
buildConfigField "String", "FIELD3", "value2"
К ним можно получить доступ в любом месте проекта, используя класс BuildConfig следующим образом:
BuildConfig.FIELD1
BuildConfig.FIELD2
BuildConfig.FIELD3
Я использую что-то вроде этого:
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"]
}
}
manifestPlaceholder - это просто установщик для Map