Fix Gradle config crash when key.properties is absent
build-apk / build (push) Failing after 11m26s

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.
This commit is contained in:
2026-08-12 00:24:04 +03:00
parent b2c17ffaae
commit 3943135397
+17 -9
View File
@@ -9,9 +9,10 @@ plugins {
// Release signing: android/key.properties (gitignored) points to a permanent // Release signing: android/key.properties (gitignored) points to a permanent
// keystore outside the repo, so every release build has the same signature and // keystore outside the repo, so every release build has the same signature and
// installs update in place without wiping app data. // installs update in place without wiping app data.
val keystoreProperties = Properties().apply { val keystorePropertiesFile = rootProject.file("key.properties")
val file = rootProject.file("key.properties") val keystoreProperties = Properties()
if (file.exists()) file.inputStream().use { load(it) } if (keystorePropertiesFile.exists()) {
keystorePropertiesFile.inputStream().use { keystoreProperties.load(it) }
} }
android { android {
@@ -36,17 +37,24 @@ android {
} }
signingConfigs { signingConfigs {
create("release") { if (keystorePropertiesFile.exists()) {
storeFile = file(keystoreProperties.getProperty("storeFile")) create("release") {
storePassword = keystoreProperties.getProperty("storePassword") storeFile = file(keystoreProperties.getProperty("storeFile"))
keyAlias = keystoreProperties.getProperty("keyAlias") storePassword = keystoreProperties.getProperty("storePassword")
keyPassword = keystoreProperties.getProperty("keyPassword") keyAlias = keystoreProperties.getProperty("keyAlias")
keyPassword = keystoreProperties.getProperty("keyPassword")
}
} }
} }
buildTypes { buildTypes {
release { release {
signingConfig = signingConfigs.getByName("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 { debug {
// Install debug builds under a separate applicationId so they don't // Install debug builds under a separate applicationId so they don't