import java.util.Properties plugins { alias(libs.plugins.android.application) alias(libs.plugins.hilt) alias(libs.plugins.navigation.safeargs) } val localProperties = Properties().apply { val file = rootProject.file("local.properties") if (file.exists()) { file.inputStream().use { load(it) } } } fun quoted(value: String): String = "\"$value\"" val emulatorBackendUrl = (localProperties.getProperty("petstore.backend.emulatorUrl") ?: "http://10.0.2.2:8080/").trim() val deviceBackendUrl = (localProperties.getProperty("petstore.backend.deviceUrl") ?: "http://10.0.0.200:8080/").trim() android { namespace = "com.example.petstoremobile" compileSdk = 36 defaultConfig { applicationId = "com.example.petstoremobile" minSdk = 24 targetSdk = 36 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" buildConfigField("String", "EMULATOR_BACKEND_URL", quoted(emulatorBackendUrl)) buildConfigField("String", "DEVICE_BACKEND_URL", quoted(deviceBackendUrl)) } buildFeatures { buildConfig = true viewBinding = true } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } } dependencies { // Core AndroidX & UI implementation(libs.appcompat) implementation(libs.material) implementation(libs.activity) implementation(libs.constraintlayout) implementation(libs.swiperefreshlayout) implementation(libs.viewpager2) // Hilt Dependency Injection implementation(libs.hilt.android) annotationProcessor(libs.hilt.compiler) // Navigation Component implementation(libs.navigation.fragment) implementation(libs.navigation.ui) // Networking implementation(libs.retrofit) implementation(libs.retrofit.gson) implementation(libs.okhttp) implementation(libs.okhttp.logging) // CameraX implementation(libs.camera.core) implementation(libs.camera.camera2) implementation(libs.camera.lifecycle) implementation(libs.camera.view) // Image Loading implementation(libs.glide) annotationProcessor(libs.glide.compiler) // Other Third-party Libraries implementation("com.github.NaikSoftware:StompProtocolAndroid:1.6.6") implementation("io.reactivex.rxjava2:rxjava:2.2.21") implementation("io.reactivex.rxjava2:rxandroid:2.1.1") implementation("com.github.prolificinteractive:material-calendarview:2.0.1") // Testing testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) }