summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Cooks <tommasogagliardi+github@gmail.com>2026-10-10 18:41:18 -0400
committerTom Cooks <tommasogagliardi+github@gmail.com>2026-10-10 18:41:18 -0400
commit349ebb2079a5c5738129b8798ea5e36e0c5262aa (patch)
treeee4d56292595203a877d9d52e96f4dc0264e4eb0
parentcce63194d0c69e7211396448f3aecd4ebfe6252e (diff)
downloadreccoon-1.0.0.tar.gz
Support release signing from keystore.propertiesv1.0.0
-rw-r--r--.gitignore3
-rw-r--r--app/build.gradle.kts30
2 files changed, 32 insertions, 1 deletions
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"