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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user