import java.util.Properties plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) } // Release signing material, kept out of the repo: the keystore lives in // ~/.navi-android/, and android-client/keystore.properties (gitignored, 600) // points at it. Without that file the build still works — assembleRelease then // produces an unsigned APK, so a fresh clone is not blocked on a secret. val keystoreProperties = Properties().apply { val file = rootProject.file("keystore.properties") if (file.exists()) file.inputStream().use { load(it) } } android { namespace = "com.navi.client" compileSdk = 35 defaultConfig { applicationId = "com.navi.client" minSdk = 26 targetSdk = 34 versionCode = 1 versionName = "1.0" } signingConfigs { if (keystoreProperties.getProperty("storeFile") != null) { create("release") { storeFile = file(keystoreProperties.getProperty("storeFile")) storePassword = keystoreProperties.getProperty("storePassword") keyAlias = keystoreProperties.getProperty("keyAlias") keyPassword = keystoreProperties.getProperty("keyPassword") } } } buildTypes { release { // null when keystore.properties is absent — see the note above. signingConfig = signingConfigs.findByName("release") isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" } } dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.material) implementation(libs.androidx.activity) }