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) } // Optional release signing: only active when keystore.properties is present // (kept out of version control). Without it, release builds are unsigned. val keystorePropsFile = rootProject.file("keystore.properties") val keystoreProps = Properties().apply { if (keystorePropsFile.exists()) FileInputStream(keystorePropsFile).use { load(it) } } val hasReleaseSigning = keystorePropsFile.exists() android { namespace = "kr.tkrmagid.easyappliance" compileSdk = 35 defaultConfig { applicationId = "kr.tkrmagid.easyappliance" minSdk = 24 targetSdk = 35 versionCode = (project.findProperty("verCode") as String?)?.toInt() ?: 11 versionName = (project.findProperty("verName") as String?) ?: "0.3.8" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } signingConfigs { if (hasReleaseSigning) { create("release") { storeFile = file(keystoreProps["storeFile"] as String) storePassword = keystoreProps["storePassword"] as String keyAlias = keystoreProps["keyAlias"] as String keyPassword = keystoreProps["keyPassword"] as String } } } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) if (hasReleaseSigning) { signingConfig = signingConfigs.getByName("release") } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { compose = true buildConfig = true } } dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.lifecycle.runtime.compose) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.activity.compose) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.ui) implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) implementation(libs.androidx.material.icons.extended) implementation(libs.androidx.navigation.compose) implementation(libs.androidx.datastore.preferences) implementation(libs.kotlinx.serialization.json) implementation(libs.retrofit) implementation(libs.okhttp.logging) implementation(libs.retrofit.kotlinx.serialization) implementation(libs.coil.compose) debugImplementation(libs.androidx.ui.tooling) testImplementation(libs.junit) testImplementation(libs.kotlinx.coroutines.test) }