import java.io.FileInputStream 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.ksp) } // Release signing config loaded from keystore.properties (gitignored). val keystorePropertiesFile = rootProject.file("keystore.properties") val keystoreProperties = Properties().apply { if (keystorePropertiesFile.exists()) load(FileInputStream(keystorePropertiesFile)) } android { namespace = "com.yarisobd.app" compileSdk = 35 defaultConfig { applicationId = "com.yarisobd.app" minSdk = 26 targetSdk = 35 versionCode = 1 versionName = "0.1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } signingConfigs { create("release") { if (keystorePropertiesFile.exists()) { storeFile = rootProject.file(keystoreProperties["storeFile"] as String) storePassword = keystoreProperties["storePassword"] as String keyAlias = keystoreProperties["keyAlias"] as String keyPassword = keystoreProperties["keyPassword"] as String } } } buildTypes { debug { applicationIdSuffix = ".debug" versionNameSuffix = "-debug" } release { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) signingConfig = signingConfigs.getByName("release") } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { compose = true buildConfig = true } } dependencies { // Compose BOM val composeBom = platform(libs.compose.bom) implementation(composeBom) androidTestImplementation(composeBom) // Compose UI 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) // Navigation implementation(libs.navigation.compose) // Activity + Compose integration implementation(libs.activity.compose) // Core implementation(libs.core.ktx) // Lifecycle implementation(libs.lifecycle.runtime.compose) implementation(libs.lifecycle.viewmodel.compose) // Network implementation(libs.okhttp) implementation(libs.okhttp.logging) implementation(libs.retrofit) implementation(libs.retrofit.kotlinx.serialization) implementation(libs.kotlinx.serialization.json) // Coroutines implementation(libs.kotlinx.coroutines.android) // Local storage — will be used in 28.3 // implementation(libs.room.runtime) // implementation(libs.room.ktx) // ksp(libs.room.compiler) // Background work implementation(libs.workmanager) // Images implementation(libs.coil.compose) implementation(libs.coil.okhttp) // Maps implementation(libs.maplibre) // Security implementation(libs.security.crypto) // Testing testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.2.1") androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1") androidTestImplementation(composeBom) androidTestImplementation("androidx.compose.ui:ui-test-junit4") }