import java.io.File import java.util.Properties plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) alias(libs.plugins.ksp) } if (file("google-services.json").exists()) { apply(plugin = "com.google.gms.google-services") apply(plugin = "com.google.firebase.crashlytics") } val keystorePropertiesFile = rootProject.file("keystore.properties") val keystoreProperties = Properties().apply { if (keystorePropertiesFile.exists()) { keystorePropertiesFile.inputStream().use(::load) } } android { namespace = "pl.firmatpp.kierowca" compileSdk = 35 fun configValue(name: String, default: String): String = providers.gradleProperty(name) .orElse(providers.environmentVariable(name)) .orElse(default) .get() defaultConfig { applicationId = "pl.firmatpp.kierowca" minSdk = 26 targetSdk = 35 versionCode = 110 versionName = "1.0.57" setProperty("archivesBaseName", "pl.firmatpp.kierowca") testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" buildConfigField("String", "API_BASE_URL", "\"https://api-intranet.firmatpp.pl/api/\"") buildConfigField("String", "REVERB_APP_KEY", "\"${configValue("REVERB_APP_KEY", "")}\"") buildConfigField("String", "REVERB_WS_BASE_URL", "\"${configValue("REVERB_WS_BASE_URL", "wss://api-intranet.firmatpp.pl/app/")}\"") } signingConfigs { create("release") { fun requiredSigningProperty(name: String): String = keystoreProperties.getProperty(name) ?: throw GradleException("Missing '$name' in keystore.properties") val configuredStoreFile = requiredSigningProperty("storeFile") storeFile = if (File(configuredStoreFile).isAbsolute) { file(configuredStoreFile) } else { rootProject.file(configuredStoreFile) } storePassword = requiredSigningProperty("storePassword") keyAlias = requiredSigningProperty("keyAlias") keyPassword = requiredSigningProperty("keyPassword") } } buildTypes { debug { isMinifyEnabled = false } release { signingConfig = signingConfigs.getByName("release") isMinifyEnabled = false ndk { debugSymbolLevel = "SYMBOL_TABLE" } proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { compose = true buildConfig = true } lint { disable += "NullSafeMutableLiveData" } } dependencies { val composeBom = platform(libs.compose.bom) implementation(composeBom) implementation(libs.activity.compose) implementation(libs.androidx.core.ktx) implementation(libs.androidx.datastore.preferences) implementation(libs.androidx.lifecycle.runtime.compose) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.navigation.compose) implementation(libs.androidx.room.ktx) implementation(libs.androidx.room.runtime) implementation(libs.androidx.work.runtime.ktx) implementation(libs.camera.camera2) implementation(libs.camera.core) implementation(libs.camera.lifecycle) implementation(libs.camera.view) implementation(libs.coil.compose) implementation(libs.compose.material.icons.extended) implementation("androidx.compose.material:material") implementation(libs.compose.material3) implementation(libs.compose.ui) implementation(libs.compose.ui.graphics) implementation(libs.compose.ui.tooling.preview) implementation(libs.coroutines.android) implementation(platform(libs.firebase.bom)) implementation(libs.firebase.crashlytics) implementation(libs.firebase.messaging) implementation(libs.okhttp) implementation(libs.okhttp.logging) implementation(libs.play.services.auth) implementation(libs.play.services.auth.api.phone) implementation(libs.retrofit) implementation(libs.retrofit.gson) debugImplementation(libs.compose.ui.tooling) testImplementation(libs.junit) testImplementation(libs.coroutines.test) ksp(libs.androidx.room.compiler) }