From 63a763ee2cf15297f53d91fa9709adc81103398c Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 13 Jul 2026 18:22:32 +0200 Subject: [PATCH] Fix: guard release signingConfig behind keystore.properties existence MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit assembleDebug currently fails on a fresh clone with "Cannot convert '' to File" because the release signingConfig block unconditionally calls file(keystoreProperties.getProperty("storeFile", "")) — Gradle evaluates the whole android{} DSL at configuration time regardless of which build type is requested, so this breaks debug builds too when no keystore.properties is present (it's gitignored, so every fresh clone hits this). Wrapping both the signingConfigs.create("release") block and the signingConfig assignment in release{} behind keystorePropertiesFile.exists() lets assembleDebug (and assembleRelease without a keystore) build cleanly, while release builds still pick up signing once keystore.properties exists. Verified: ./gradlew clean assembleDebug succeeds with no keystore.properties in the tree at all. --- app/build.gradle.kts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index de9005b..dd7be17 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -31,11 +31,13 @@ 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", "") + } } } @@ -48,7 +50,9 @@ android { release { isMinifyEnabled = true isShrinkResources = true - signingConfig = signingConfigs.getByName("release") + if (keystorePropertiesFile.exists()) { + signingConfig = signingConfigs.getByName("release") + } proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"