Files
OnBudget/android/app/build.gradle.kts
T
Sanders 3943135397
build-apk / build (push) Failing after 11m26s
Fix Gradle config crash when key.properties is absent
signingConfigs.release was configured unconditionally, so even assembleDebug
failed at configuration time with 'getProperty(...) must not be null' on CI
(build-apk.yml restores the keystore only after the debug build). Guard the
release signing config on key.properties existence: debug builds proceed
unsigned, release builds still sign when the keystore is present.
2026-08-12 00:24:04 +03:00

77 lines
2.6 KiB
Kotlin

import java.util.Properties
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 (gitignored) points to a permanent
// keystore outside the repo, so every release build has the same signature and
// installs update in place without wiping app data.
val keystorePropertiesFile = rootProject.file("key.properties")
val keystoreProperties = Properties()
if (keystorePropertiesFile.exists()) {
keystorePropertiesFile.inputStream().use { keystoreProperties.load(it) }
}
android {
namespace = "com.sanders.budget.new_budget"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.sanders.budget.new_budget"
// 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 {
if (keystorePropertiesFile.exists()) {
create("release") {
storeFile = file(keystoreProperties.getProperty("storeFile"))
storePassword = keystoreProperties.getProperty("storePassword")
keyAlias = keystoreProperties.getProperty("keyAlias")
keyPassword = keystoreProperties.getProperty("keyPassword")
}
}
}
buildTypes {
release {
// No signing config when key.properties is absent (CI debug builds,
// local dev) — APK is simply unsigned. With key.properties present,
// releases are signed with the permanent keystore.
if (keystorePropertiesFile.exists()) {
signingConfig = signingConfigs.getByName("release")
}
}
debug {
// Install debug builds under a separate applicationId so they don't
// overwrite an installed release build (and vice versa).
applicationIdSuffix = ".debug"
versionNameSuffix = "-debug"
}
}
}
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}
flutter {
source = "../.."
}