93 lines
2.7 KiB
Kotlin
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()) }
|