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
|
||||
// keystore outside the repo, so every release build has the same signature and
|
||||
// installs update in place without wiping app data.
|
||||
val keystoreProperties = Properties().apply {
|
||||
val file = rootProject.file("key.properties")
|
||||
if (file.exists()) file.inputStream().use { load(it) }
|
||||
val keystorePropertiesFile = rootProject.file("key.properties")
|
||||
val keystoreProperties = Properties()
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
keystorePropertiesFile.inputStream().use { keystoreProperties.load(it) }
|
||||
}
|
||||
|
||||
android {
|
||||
@@ -36,17 +37,24 @@ android {
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
create("release") {
|
||||
storeFile = file(keystoreProperties.getProperty("storeFile"))
|
||||
storePassword = keystoreProperties.getProperty("storePassword")
|
||||
keyAlias = keystoreProperties.getProperty("keyAlias")
|
||||
keyPassword = keystoreProperties.getProperty("keyPassword")
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
create("release") {
|
||||
storeFile = file(keystoreProperties.getProperty("storeFile"))
|
||||
storePassword = keystoreProperties.getProperty("storePassword")
|
||||
keyAlias = keystoreProperties.getProperty("keyAlias")
|
||||
keyPassword = keystoreProperties.getProperty("keyPassword")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
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 {
|
||||
// Install debug builds under a separate applicationId so they don't
|
||||
|
||||
Reference in New Issue
Block a user