import java.io.FileInputStream import java.util.Properties import org.jetbrains.kotlin.gradle.dsl.JvmTarget // Release signing: create android/key.properties (see "Release signing" in the // documentation). Without it the release build is signed with the debug key. val keystoreProperties = Properties() val keystorePropertiesFile = rootProject.file("key.properties") if (keystorePropertiesFile.exists()) { keystoreProperties.load(FileInputStream(keystorePropertiesFile)) } plugins { id("com.android.application") id("kotlin-android") id("dev.flutter.flutter-gradle-plugin") // Firebase plugin — must come AFTER android + kotlin plugins. id("com.google.gms.google-services") } // Load values from assets/.env so we can inject things like the Google Maps API // key into AndroidManifest.xml without committing the key to source. val envProps = Properties().apply { val envFile = file("${rootProject.projectDir.parent}/assets/.env") if (envFile.exists()) { envFile.forEachLine { rawLine -> val line = rawLine.trim() if (line.isEmpty() || line.startsWith("#")) return@forEachLine val eq = line.indexOf('=') if (eq <= 0) return@forEachLine val key = line.substring(0, eq).trim() val value = line.substring(eq + 1).trim().trim('"', '\'') if (key.isNotEmpty()) setProperty(key, value) } } } fun envOr(key: String, fallback: String): String = (envProps.getProperty(key) ?: System.getenv(key) ?: fallback).ifBlank { fallback } android { namespace = "com.appifly.foodifly" compileSdk = 36 ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 isCoreLibraryDesugaringEnabled = true } kotlin { compilerOptions { jvmTarget.set( org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 ) } } // kotlin { // jvmToolchain(17) // } defaultConfig { applicationId = "com.appifly.foodifly" minSdk = flutter.minSdkVersion targetSdk = 36 versionCode = flutter.versionCode versionName = flutter.versionName // Injected into AndroidManifest.xml as ${GOOGLE_MAPS_API_KEY}. // Set the real value in assets/.env (or as an env var) — never commit it. manifestPlaceholders["GOOGLE_MAPS_API_KEY"] = envOr("GOOGLE_MAPS_API_KEY", "") } signingConfigs { create("release") { keyAlias = keystoreProperties["keyAlias"] as String? keyPassword = keystoreProperties["keyPassword"] as String? storeFile = keystoreProperties["storeFile"]?.let { file(it) } storePassword = keystoreProperties["storePassword"] as String? } } buildTypes { release { signingConfig = if (keystorePropertiesFile.exists()) signingConfigs.getByName("release") else signingConfigs.getByName("debug") proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } } dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") } flutter { source = "../.." }