Updated on 2026-08-14
This commit is contained in:
parent
ff16399ed5
commit
831a9ad0e2
1 changed files with 37 additions and 18 deletions
|
|
@ -1,6 +1,7 @@
|
|||
package com.tangem.plugin.configuration.configurations.extension
|
||||
|
||||
import com.android.build.gradle.AppExtension
|
||||
import com.android.build.gradle.internal.dsl.DefaultConfig
|
||||
import com.tangem.plugin.configuration.model.AppConfig
|
||||
import com.tangem.plugin.configuration.model.BuildType
|
||||
import com.tangem.plugin.configuration.utils.BuildConfigFieldFactory
|
||||
|
|
@ -9,15 +10,15 @@ import com.android.build.gradle.internal.dsl.BuildType as AndroidBuildType
|
|||
|
||||
internal fun AppExtension.configure(project: Project) {
|
||||
configureCompileSdk()
|
||||
configureDefaultConfig(project)
|
||||
val defaultConfig = configureDefaultConfig(project)
|
||||
configureBuildFeatures()
|
||||
configureBuildTypes()
|
||||
configureBuildTypes(defaultConfig)
|
||||
configurePackagingOptions()
|
||||
configureCompose(project)
|
||||
configureCompilerOptions()
|
||||
}
|
||||
|
||||
private fun AppExtension.configureDefaultConfig(project: Project) {
|
||||
private fun AppExtension.configureDefaultConfig(project: Project): DefaultConfig {
|
||||
defaultConfig {
|
||||
applicationId = AppConfig.packageName
|
||||
minSdk = AppConfig.minSdkVersion
|
||||
|
|
@ -39,6 +40,8 @@ private fun AppExtension.configureDefaultConfig(project: Project) {
|
|||
|
||||
testInstrumentationRunner = "com.tangem.common.HiltTestRunner"
|
||||
}
|
||||
|
||||
return defaultConfig
|
||||
}
|
||||
|
||||
// TODO: [REDACTED_JIRA]
|
||||
|
|
@ -48,43 +51,57 @@ private fun AppExtension.configureBuildFeatures() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun AppExtension.configureBuildTypes() {
|
||||
private fun AppExtension.configureBuildTypes(defaultConfig: DefaultConfig) {
|
||||
buildTypes {
|
||||
BuildType.values().forEach { buildVariant ->
|
||||
maybeCreate(buildVariant.id).apply {
|
||||
configureBuildVariant(extension = this@configureBuildTypes, buildVariant)
|
||||
BuildType.values().forEach { buildType ->
|
||||
maybeCreate(buildType.id).apply {
|
||||
configureBuildVariant(
|
||||
appExtension = this@configureBuildTypes,
|
||||
buildType = buildType,
|
||||
defaultConfig = defaultConfig
|
||||
)
|
||||
|
||||
BuildConfigFieldFactory(
|
||||
fields = buildVariant.configFields,
|
||||
fields = buildType.configFields,
|
||||
builder = ::buildConfigField,
|
||||
).create()
|
||||
}
|
||||
}
|
||||
}
|
||||
testBuildType = BuildType.Mocked.id
|
||||
}
|
||||
|
||||
private fun AndroidBuildType.configureBuildVariant(extension: AppExtension, buildType: BuildType) {
|
||||
private fun AndroidBuildType.configureBuildVariant(
|
||||
appExtension: AppExtension,
|
||||
buildType: BuildType,
|
||||
defaultConfig: DefaultConfig,
|
||||
) {
|
||||
when (buildType) {
|
||||
BuildType.Release -> {
|
||||
isDebuggable = false
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(extension.getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
|
||||
proguardFiles(appExtension.getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
|
||||
}
|
||||
BuildType.Debug -> {
|
||||
isDebuggable = true
|
||||
isMinifyEnabled = false
|
||||
}
|
||||
BuildType.External -> {
|
||||
initWith(extension.buildTypes.getByName(BuildType.Release.id))
|
||||
initWith(appExtension.buildTypes.getByName(BuildType.Release.id))
|
||||
matchingFallbacks.add(BuildType.Release.id)
|
||||
signingConfig = extension.signingConfigs.getByName(BuildType.Debug.id)
|
||||
signingConfig = appExtension.signingConfigs.getByName(BuildType.Debug.id)
|
||||
}
|
||||
BuildType.Internal,
|
||||
BuildType.Mocked,
|
||||
-> {
|
||||
initWith(extension.buildTypes.getByName(BuildType.Release.id))
|
||||
BuildType.Internal -> {
|
||||
initWith(appExtension.buildTypes.getByName(BuildType.Release.id))
|
||||
matchingFallbacks.add(BuildType.Release.id)
|
||||
signingConfig = extension.signingConfigs.getByName(BuildType.Debug.id)
|
||||
signingConfig = appExtension.signingConfigs.getByName(BuildType.Debug.id)
|
||||
isDebuggable = true
|
||||
}
|
||||
BuildType.Mocked -> {
|
||||
defaultConfig.versionName = LARGE_VERSION_NAME
|
||||
initWith(appExtension.buildTypes.getByName(BuildType.Release.id))
|
||||
matchingFallbacks.add(BuildType.Mocked.id)
|
||||
signingConfig = appExtension.signingConfigs.getByName(BuildType.Debug.id)
|
||||
isDebuggable = true
|
||||
}
|
||||
}
|
||||
|
|
@ -102,4 +119,6 @@ private fun AppExtension.configurePackagingOptions() {
|
|||
excludes += "META-INF/gradle/incremental.annotation.processors"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private const val LARGE_VERSION_NAME = "100.0.0"
|
||||
Loading…
Add table
Add a link
Reference in a new issue