Gradle Management: BuildType Configuration Plugin - devrath/RunTracer GitHub Wiki
What we can replace
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
Define buildtype file plugin
internal fun Project.configureBuildTypes(
commonExtension: CommonExtension<*, *, *, *, *,*>,
extensionType: ExtensionType,
providers: ProviderFactory
) {
commonExtension.run {
buildFeatures {
buildConfig = true
}
val apiKey = gradleLocalProperties(rootDir,providers).getProperty("API_KEY")
when(extensionType) {
ExtensionType.APPLICATION -> {
extensions.configure<ApplicationExtension> {
buildTypes {
debug {
configureDebugBuildType(apiKey)
}
release {
configureReleaseBuildType(commonExtension, apiKey)
}
}
}
}
ExtensionType.LIBRARY -> {
extensions.configure<LibraryExtension> {
buildTypes {
debug {
configureDebugBuildType(apiKey)
}
release {
configureReleaseBuildType(commonExtension, apiKey)
}
}
}
}
}
}
}
private fun BuildType.configureDebugBuildType(apiKey: String) {
buildConfigField("String", "API_KEY", "\"$apiKey\"")
buildConfigField("String", "BASE_URL", "\"https://runique.pl-coding.com:8080\"")
}
private fun BuildType.configureReleaseBuildType(
commonExtension: CommonExtension<*, *, *, *, *,*>,
apiKey: String
) {
buildConfigField("String", "API_KEY", "\"$apiKey\"")
buildConfigField("String", "BASE_URL", "\"https://runique.pl-coding.com:8080\"")
isMinifyEnabled = true
proguardFiles(
commonExtension.getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
Apply in ApplicationConventionPlugin
class AndroidApplicationConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
target.run {
// Other code
extensions.configure<ApplicationExtension> {
// Other code
// Add here -->
configureBuildTypes(
commonExtension = this,
extensionType = ExtensionType.APPLICATION,
providers = providers
)
}
}
}
}