import java.util.Properties plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.google.services) } // Play upload key lives OUTSIDE the repo (C:/dev/URLABURDA-KEYS). When the // properties file is missing the release build simply stays unsigned. val keystoreProps = Properties().apply { val f = File("C:/dev/URLABURDA-KEYS/keystore.properties") if (f.exists()) f.inputStream().use { load(it) } } android { namespace = "com.urlaburda.app" compileSdk = 35 defaultConfig { applicationId = "com.urlaburda.app" minSdk = 26 targetSdk = 35 versionCode = 1 versionName = "1.0.0" // Trailing slash required: Retrofit concatenates relative paths onto this. buildConfigField("String", "API_BASE_URL", "\"https://urlaburda.com/api/v1/\"") } signingConfigs { if (keystoreProps.isNotEmpty()) { create("release") { storeFile = file(keystoreProps.getProperty("storeFile")) storePassword = keystoreProps.getProperty("storePassword") keyAlias = keystoreProps.getProperty("keyAlias") keyPassword = keystoreProps.getProperty("keyPassword") } } } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", ) if (keystoreProps.isNotEmpty()) { signingConfig = signingConfigs.getByName("release") } } debug { versionNameSuffix = "-debug" } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { compose = true buildConfig = true } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } } dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.lifecycle.runtime.compose) implementation(libs.androidx.activity.compose) implementation(libs.androidx.navigation.compose) implementation(libs.androidx.datastore.preferences) implementation(libs.androidx.core.splashscreen) implementation(libs.androidx.fragment) implementation(platform(libs.compose.bom)) implementation(libs.compose.ui) implementation(libs.compose.ui.graphics) implementation(libs.compose.ui.tooling.preview) implementation(libs.compose.material3) implementation(libs.compose.material.icons) debugImplementation(libs.compose.ui.tooling) implementation(libs.okhttp) implementation(libs.okhttp.logging) implementation(libs.retrofit) implementation(libs.retrofit.kotlinx) implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.coroutines.android) implementation(libs.coil.compose) implementation(libs.play.services.location) implementation(platform(libs.firebase.bom)) implementation(libs.firebase.messaging) implementation(libs.firebase.analytics) }