From 5bfc769121b77b5b9dff832a9b8a05fc75e2fdb5 Mon Sep 17 00:00:00 2001 From: Hadrian Burkhardt Date: Sun, 10 May 2026 21:18:29 +0200 Subject: [PATCH] keystore added --- .gitignore | 3 +++ app/build.gradle.kts | 59 ++++++++++++++++++++++++++++++++++++++++++++ gradlew | 0 3 files changed, 62 insertions(+) mode change 100644 => 100755 gradlew diff --git a/.gitignore b/.gitignore index 9871477..97a1a0d 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,9 @@ build/ # Local machine config local.properties +keystore.properties +*.jks +*.keystore # OS files .DS_Store diff --git a/app/build.gradle.kts b/app/build.gradle.kts index b87b6e8..4bd51f0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,9 +1,51 @@ +import java.util.Properties + plugins { id("com.android.application") id("com.google.devtools.ksp") id("org.jetbrains.kotlin.plugin.compose") } +val keystorePropertiesFile = rootProject.file("keystore.properties") +val keystoreProperties = Properties().apply { + if (keystorePropertiesFile.exists()) { + keystorePropertiesFile.inputStream().use(::load) + } +} + +fun signingValue(propertyName: String, envName: String): String? { + return (keystoreProperties[propertyName] as? String) + ?.takeIf { it.isNotBlank() } + ?: System.getenv(envName)?.takeIf { it.isNotBlank() } +} + +val releaseStoreFile = signingValue("storeFile", "RELEASE_STORE_FILE") +val releaseStorePassword = signingValue("storePassword", "RELEASE_STORE_PASSWORD") +val releaseKeyAlias = signingValue("keyAlias", "RELEASE_KEY_ALIAS") +val releaseKeyPassword = signingValue("keyPassword", "RELEASE_KEY_PASSWORD") +val hasReleaseSigning = listOf( + releaseStoreFile, + releaseStorePassword, + releaseKeyAlias, + releaseKeyPassword +).all { !it.isNullOrBlank() } + +gradle.taskGraph.whenReady { + val releaseBundleRequested = allTasks.any { + it.path == ":app:bundleRelease" || it.name == "bundleRelease" + } + val releaseApkRequested = allTasks.any { + it.path == ":app:assembleRelease" || it.name == "assembleRelease" + } + if ((releaseBundleRequested || releaseApkRequested) && !hasReleaseSigning) { + throw GradleException( + "Release signing is not configured. Fill storePassword, keyAlias, and keyPassword " + + "in keystore.properties, or set RELEASE_STORE_FILE, RELEASE_STORE_PASSWORD, " + + "RELEASE_KEY_ALIAS, and RELEASE_KEY_PASSWORD." + ) + } +} + android { namespace = "de.softwareapp_hb.privateqrscanner" compileSdk = 36 @@ -22,9 +64,26 @@ android { } } + signingConfigs { + if (hasReleaseSigning) { + create("release") { + storeFile = file(releaseStoreFile!!) + storePassword = releaseStorePassword + keyAlias = releaseKeyAlias + keyPassword = releaseKeyPassword + } + } + } + buildTypes { release { isMinifyEnabled = true + if (hasReleaseSigning) { + signingConfig = signingConfigs.getByName("release") + } + ndk { + debugSymbolLevel = "SYMBOL_TABLE" + } proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" diff --git a/gradlew b/gradlew old mode 100644 new mode 100755