В моем приложении у меня есть 4 среды: Dev , SIT , UAT , Release . Для каждой среды у меня есть тип сборки со своей конфигурацией. Очень похоже на предложенный способ, например:
buildTypes {
Dev {
buildConfigField "String", 'BASE_URL', "https://dev-api.yourbackend.com"
}
SIT {
buildConfigField "String", 'BASE_URL', "https://sit-api.yourbackend.com"
}
UAT {
buildConfigField "String", 'BASE_URL', "https://uat-api.yourbackend.com"
}
Release {
buildConfigField "String", 'BASE_URL', "https://api.yourbackend.com"
}
}
Но теперь у меня есть 5-6 различных таких конфигураций, а не только BASE_URL
. Как и ClientId
, ClientSecret
et c ..
Плюс У меня есть 2 варианта продукта, что означает, что мне нужно создать 8 различных вариантов сборки и иметь все эти 5-6 конфигураций внутри каждого такого варианта. Все, что выглядит неуклюже.
1 другое решение, которое я нашел, - это создать папку для каждого варианта сборки, например flavour1Dev
, flavour2Sit
, flavour2Uat
et c .. и иметь файл конфигурации укажите c для этого варианта в этой папке. Это снова включает в себя 8 различных папок и продолжает расти по мере добавления новых сред.
Есть ли лучший способ справиться с этим, вероятно, как файл config.gradle
, где я могу иметь только эти конфигурации и импортировать их обратно в app/build.gradle
, способ модульной конфигурации всех вариантов сборки.
Update-1
Я пробовал это согласно @Md. Ответ Асадуззамана:
build.gradle
…
…
apply from: './config.gradle'
…
…
android {
…
…
defaultConfig {
…
…
buildConfigField('String', ‘BASE_URL’, '"https://default.yourbackend.com”')
}
…
…
}
config.gradle
android {
buildTypes {
dev {
buildConfigField('String', ‘BASE_URL’, '"https://dev.yourbackend.com”')
}
sit {
buildConfigField('String', ‘BASE_URL’, '"https://sit.yourbackend.com”')
}
}
}
Проблема в том, что в сгенерированный BuildConfig
, я все еще вижу значения по умолчанию:
public static final String BASE_URL = "https://default.yourbackend.com";