Files
coco 723ce1af5c a
2026-07-03 15:12:48 +08:00

93 lines
2.7 KiB
Kotlin

import com.android.build.api.dsl.ApplicationDefaultConfig
import java.util.Locale
plugins {
id("local.app")
}
android {
val catalogs = extensions.getByType<VersionCatalogsExtension>()
val libs = catalogs.named("libs")
namespace = "com.igorwojda.showcase"
compileSdk = libs.findVersion("compileSdk").get().toString().toInt()
defaultConfig {
minSdk = libs.findVersion("minSdk").get().toString().toInt()
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
defaultConfig {
applicationId = "com.igorwojda.showcase"
versionCode = 1
versionName = "0.0.1" // SemVer (Major.Minor.Patch)
minSdk = 28
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled = true
vectorDrawables {
useSupportLibrary = true
}
buildConfigFieldFromGradleProperty("apiBaseUrl")
buildConfigFieldFromGradleProperty("apiToken")
}
buildTypes {
getByName("release") {
isMinifyEnabled = false
proguardFiles("proguard-android.txt", "proguard-rules.pro")
}
}
@Suppress("UnstableApiUsage")
buildFeatures {
viewBinding = true
buildConfig = true
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = libs.findVersion("kotlinCompilerExtensionVersion").get().toString()
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}
@Suppress("UnstableApiUsage")
testOptions {
unitTests.isReturnDefaultValues = true
}
}
dependencies {
// Syntax utilizes Gradle TYPESAFE_PROJECT_ACCESSORS feature
implementation(projects.featureAlbum)
implementation(projects.featureProfile)
implementation(projects.featureFavourite)
}
/*
Takes value from Gradle project property and sets it as Android build config property eg.
apiToken variable present in the settings.gradle file will be accessible as BuildConfig.GRADLE_API_TOKEN in the app.
*/
fun ApplicationDefaultConfig.buildConfigFieldFromGradleProperty(gradlePropertyName: String) {
val propertyValue = project.properties[gradlePropertyName] as? String
checkNotNull(propertyValue) { "Gradle property $gradlePropertyName is null" }
val androidResourceName = "GRADLE_${gradlePropertyName.toSnakeCase()}".uppercase(Locale.getDefault())
buildConfigField("String", androidResourceName, propertyValue)
}
fun String.toSnakeCase() = this.split(Regex("(?=[A-Z])")).joinToString("_") { it.lowercase(Locale.getDefault()) }