From 349ebb2079a5c5738129b8798ea5e36e0c5262aa Mon Sep 17 00:00:00 2001 From: Tom Cooks Date: Sat, 10 Oct 2026 18:41:18 -0400 Subject: Support release signing from keystore.properties --- .gitignore | 3 +++ app/build.gradle.kts | 30 +++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7226cbf..a541204 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ # Build outputs. The sherpa-onnx runtime is fetched from JitPack, so no # prebuilt binary is committed here. /dist/ + +# Release signing (never commit keys or passwords). +/keystore.properties diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1f5fb20..c539960 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,7 +1,18 @@ +import java.util.Properties + plugins { id("com.android.application") } +// Release signing is read from keystore.properties (git-ignored, present only on +// the maintainer's machine). CI (e.g. F-Droid) builds an unsigned APK. +val keystorePropertiesFile = rootProject.file("keystore.properties") +val keystoreProperties = Properties().apply { + if (keystorePropertiesFile.exists()) { + keystorePropertiesFile.inputStream().use { load(it) } + } +} + android { namespace = "com.tomcooks.reccoon" @@ -25,13 +36,30 @@ android { } } + signingConfigs { + if (keystorePropertiesFile.exists()) { + create("release") { + storeFile = file(keystoreProperties.getProperty("storeFile")) + storePassword = keystoreProperties.getProperty("storePassword") + keyAlias = keystoreProperties.getProperty("keyAlias") + keyPassword = keystoreProperties.getProperty("keyPassword") + } + } + } + buildTypes { debug { isMinifyEnabled = false } release { isMinifyEnabled = false - signingConfig = signingConfigs.getByName("debug") + // Signed with the maintainer's key when keystore.properties is + // present; unsigned otherwise so F-Droid/CI signs it itself. + signingConfig = if (keystorePropertiesFile.exists()) { + signingConfigs.getByName("release") + } else { + null + } proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" -- cgit v1.2.3