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") } android { namespace = "app.halkyon.learn" compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } defaultConfig { applicationId = "app.halkyon.learn" // 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 // Uses the version code from pubspec.yaml. When using split APKs, 1000 * ABI_VERSION // is added automatically by Flutter. (https://developer.android.com/studio/build/configure-apk-splits#configure-APK-versions) // You can force using the value of versionCode by specifying the `-P force-version-code-ignoring-abi=true` // flag during build. versionCode = flutter.versionCode versionName = flutter.versionName } // The app's own key signs release builds when tool/release.dart hands it over // through the environment: the keystore's path and the key's alias, and the // password asked for at each release, never written down. Other release builds // are signed with the debug key, so `flutter run --release` works anywhere; the // release script refuses to build without the app's key. val releaseKeystore = System.getenv("HALKYON_ANDROID_KEYSTORE") signingConfigs { if (releaseKeystore != null) { create("release") { storeFile = file(releaseKeystore) keyAlias = System.getenv("HALKYON_ANDROID_KEY_ALIAS") // A PKCS #12 keystore has one password, for the store and its key. storePassword = System.getenv("HALKYON_ANDROID_KEYSTORE_PASSWORD") keyPassword = System.getenv("HALKYON_ANDROID_KEYSTORE_PASSWORD") } } } buildTypes { release { signingConfig = signingConfigs.findByName("release") ?: signingConfigs.getByName("debug") } } // The native libraries go into the APK compressed. One APK serves every phone, so // it holds them for three architectures; stored uncompressed (the default, made // for stores that send each phone its own) they made it 110 MB to download and to // keep. Compressed it's about half that, and Android unpacks the phone's own // libraries as it installs the app. packaging { jniLibs { useLegacyPackaging = true } } // Leaves out the list of dependencies Gradle would otherwise add to the APK, // encrypted for Google Play alone; F-Droid's and others' scanners flag it. dependenciesInfo { includeInApk = false includeInBundle = false } } kotlin { compilerOptions { jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 } } flutter { source = "../.." } dependencies { // NotificationCompat's ProgressStyle and promoted notifications (Android 16's // Live Updates) for the Pomodoro timer, from v1.17 on; the build resolves this // version already. v1.19 would need compileSdk 37. implementation("androidx.core:core:1.18.0") }