From 68a6c57cf23d3bd39f1426431dfd0cbf107f320d Mon Sep 17 00:00:00 2001 From: Tommy Chow Date: Sat, 7 Feb 2026 14:17:07 -0800 Subject: [PATCH] update android config: migrate gradle to kts, upgrade firebase plugins, fix edge-to-edge - migrate settings.gradle, build.gradle, app/build.gradle to kotlin dsl (.kts) - upgrade java/kotlin compatibility from 1.8 to 17 - upgrade firebase gradle plugins (google-services 4.4.4, crashlytics 3.0.6, perf 2.0.2) - remove jetifier, add gradle caching and parallel builds - fix windowDrawsSystemBarBackgrounds for edge-to-edge at targetSdk 36 - add dataExtractionRules for android 12+ backup compliance - use layout.buildDirectory api (replaces deprecated buildDir) Co-Authored-By: Claude Opus 4.6 --- android/app/build.gradle | 60 ------------------- android/app/build.gradle.kts | 60 +++++++++++++++++++ android/app/src/main/AndroidManifest.xml | 3 +- .../src/main/res/values-night-v31/styles.xml | 2 +- .../app/src/main/res/values-night/styles.xml | 2 +- .../app/src/main/res/values-v31/styles.xml | 2 +- android/app/src/main/res/values/styles.xml | 2 +- .../main/res/xml/data_extraction_rules.xml | 9 +++ android/build.gradle | 18 ------ android/build.gradle.kts | 24 ++++++++ android/gradle.properties | 3 +- android/settings.gradle | 28 --------- android/settings.gradle.kts | 28 +++++++++ 13 files changed, 129 insertions(+), 112 deletions(-) delete mode 100644 android/app/build.gradle create mode 100644 android/app/build.gradle.kts create mode 100644 android/app/src/main/res/xml/data_extraction_rules.xml delete mode 100644 android/build.gradle create mode 100644 android/build.gradle.kts delete mode 100644 android/settings.gradle create mode 100644 android/settings.gradle.kts diff --git a/android/app/build.gradle b/android/app/build.gradle deleted file mode 100644 index d2a897d0..00000000 --- a/android/app/build.gradle +++ /dev/null @@ -1,60 +0,0 @@ -plugins { - id "com.android.application" - // START: FlutterFire Configuration - id 'com.google.gms.google-services' - id 'com.google.firebase.firebase-perf' - id 'com.google.firebase.crashlytics' - // END: FlutterFire Configuration - id "kotlin-android" - // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. - id "dev.flutter.flutter-gradle-plugin" -} - -def keystoreProperties = new Properties() -def keystorePropertiesFile = rootProject.file("key.properties") -if (keystorePropertiesFile.exists()) { - keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) -} - -android { - namespace = "com.tommychow.frosty" - compileSdk = flutter.compileSdkVersion - ndkVersion = flutter.ndkVersion - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = JavaVersion.VERSION_1_8 - } - - defaultConfig { - applicationId = "com.tommychow.frosty" - // You can update the following values to match your application needs. - // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = flutter.minSdkVersion - targetSdk = flutter.targetSdkVersion - versionCode = flutter.versionCode - versionName = flutter.versionName - } - - signingConfigs { - release { - keyAlias keystoreProperties["keyAlias"] - keyPassword keystoreProperties["keyPassword"] - storeFile keystoreProperties["storeFile"] ? file(keystoreProperties["storeFile"]) : null - storePassword keystoreProperties["storePassword"] - } - } - buildTypes { - release { - signingConfig signingConfigs.release - } - } -} - -flutter { - source = "../.." -} diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 00000000..c9f675d5 --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,60 @@ +import java.io.FileInputStream +import java.util.Properties + +plugins { + id("com.android.application") + id("com.google.gms.google-services") + id("com.google.firebase.firebase-perf") + id("com.google.firebase.crashlytics") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +val keystoreProperties = Properties() +val keystorePropertiesFile = rootProject.file("key.properties") +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(FileInputStream(keystorePropertiesFile)) +} + +android { + namespace = "com.tommychow.frosty" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17.toString() + } + + defaultConfig { + applicationId = "com.tommychow.frosty" + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + 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 = signingConfigs.getByName("release") + } + } +} + +flutter { + source = "../.." +} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 7b2ba6ba..4beaec33 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -13,7 +13,8 @@ android:label="Frosty" android:name="${applicationName}" android:icon="@mipmap/ic_launcher" - android:allowBackup="false"> + android:allowBackup="false" + android:dataExtractionRules="@xml/data_extraction_rules"> false false - false + true shortEdges