From 5b5a5d5cd82bb14666d674f851fc9e23afabb150 Mon Sep 17 00:00:00 2001 From: Guido Schmit Date: Mon, 13 Jul 2026 17:39:33 +0200 Subject: [PATCH] chore(android): release signing via keystore.properties Co-Authored-By: Claude Opus 4.8 --- app/build.gradle.kts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f15059b..6670516 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,6 @@ +import java.io.FileInputStream +import java.util.Properties + plugins { id("com.android.application") version "8.10.0" id("org.jetbrains.kotlin.android") version "1.9.20" @@ -5,6 +8,14 @@ plugins { id("com.google.dagger.hilt.android") version "2.49" } +// Release signing is driven by a git-ignored keystore.properties in the repo +// root (see keystore.properties.example). Absent (e.g. CI / fresh clone) the +// release build simply stays unsigned — debug builds are unaffected. +val keystorePropsFile = rootProject.file("keystore.properties") +val keystoreProps = Properties().apply { + if (keystorePropsFile.exists()) FileInputStream(keystorePropsFile).use { load(it) } +} + android { namespace = "com.scarriffle.calendarr" compileSdk = 34 @@ -20,10 +31,24 @@ android { vectorDrawables { useSupportLibrary = true } } + signingConfigs { + if (keystorePropsFile.exists()) { + create("release") { + storeFile = file(keystoreProps.getProperty("storeFile")) + storePassword = keystoreProps.getProperty("storePassword") + keyAlias = keystoreProps.getProperty("keyAlias") + keyPassword = keystoreProps.getProperty("keyPassword") + } + } + } + buildTypes { release { isMinifyEnabled = false proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + if (keystorePropsFile.exists()) { + signingConfig = signingConfigs.getByName("release") + } } }