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.hilt.android) alias(libs.plugins.ksp) } val localProperties = Properties().apply { val file = rootProject.file("local.properties") if (file.exists()) { file.inputStream().use { load(it) } } } fun localProp(key: String, default: String): String = (localProperties.getProperty(key) ?: System.getenv(key) ?: default) android { namespace = "com.guidecity.app" compileSdk = 34 defaultConfig { applicationId = "com.guidecity.app" minSdk = 26 targetSdk = 34 versionCode = 1 versionName = "0.1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" buildConfigField( "String", "DGIS_API_KEY", "\"${localProp("DGIS_API_KEY", "")}\"", ) buildConfigField( "String", "API_BASE_URL", "\"${localProp("API_BASE_URL", "http://10.0.2.2:8000/")}\"", ) } buildTypes { release { isMinifyEnabled = false proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" freeCompilerArgs += listOf( "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api", ) } buildFeatures { compose = true buildConfig = true } } dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) 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) debugImplementation(libs.androidx.ui.tooling) implementation(libs.hilt.android) ksp(libs.hilt.compiler) implementation(libs.hilt.navigation.compose) implementation(libs.retrofit.core) implementation(libs.retrofit.kotlinx.serialization.converter) implementation(libs.okhttp.logging.interceptor) implementation(libs.kotlinx.serialization.json) implementation(libs.androidx.room.runtime) implementation(libs.androidx.room.ktx) ksp(libs.androidx.room.compiler) implementation(libs.androidx.datastore.preferences) implementation(libs.play.services.location) implementation(libs.kotlinx.coroutines.play.services) // 2GIS MapKit SDK: add once the exact Maven coordinates/repository are // confirmed from https://docs.2gis.com/ — see map/DgisMapView.kt for the // isolated integration point in the meantime. testImplementation(libs.junit) androidTestImplementation(libs.androidx.test.ext.junit) androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.ui.test.junit4) debugImplementation(libs.androidx.ui.test.manifest) }