import java.util.Properties import java.io.FileInputStream plugins { id("com.android.application") // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id("dev.flutter.flutter-gradle-plugin") } // Release-Signing: android/key.properties (nie committen, siehe .gitignore). // Fehlt die Datei (z.B. frischer Checkout ohne Keystore), fällt der Release- // Build auf den Debug-Key zurück statt zu scheitern – nur auf dem // Build-Rechner (236) ist der echte Release-Keystore hinterlegt. val keystorePropertiesFile = rootProject.file("key.properties") val keystoreProperties = Properties() val hasReleaseKeystore = keystorePropertiesFile.exists() if (hasReleaseKeystore) { keystoreProperties.load(FileInputStream(keystorePropertiesFile)) } android { namespace = "de.timemaster.timemaster_kiosk" compileSdk = 36 ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } defaultConfig { applicationId = "de.timemaster.timemaster_kiosk" minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName } signingConfigs { if (hasReleaseKeystore) { create("release") { keyAlias = keystoreProperties["keyAlias"] as String keyPassword = keystoreProperties["keyPassword"] as String storeFile = rootProject.file(keystoreProperties["storeFile"] as String) storePassword = keystoreProperties["storePassword"] as String } } } buildTypes { release { signingConfig = if (hasReleaseKeystore) { signingConfigs.getByName("release") } else { signingConfigs.getByName("debug") } // R8 lief bereits implizit (Standard-Verhalten des Flutter- // Gradle-Plugins für Release-Builds) und zerstörte ohne // proguard-rules.pro die Reflection-basierte Komponenten- // Registrierung von ML Kit (mobile_scanner) – führte zu // "NoSuchMethodException: ...Registrar. []" und in Folge // zu NullPointerExceptions beim Scannen. Jetzt explizit mit // passenden Keep-Regeln statt implizit ohne. isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } } kotlin { compilerOptions { jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 } } flutter { source = "../.." }