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.meditate" compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } defaultConfig { applicationId = "app.halkyon.meditate" // 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, as Learn's and Train's do: 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 tool releases no APK signed otherwise. 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, as Learn's: one APK serves // every phone, holding them for three architectures, and Android unpacks the // phone's own 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 = "../.." }