build: add support for user-provided keystore for local release builds without a hassle

This commit is contained in:
flexxxxer
2025-11-29 15:03:53 +03:00
committed by Bnyro
parent 1cbec1f6f5
commit f6575155b0
2 changed files with 30 additions and 0 deletions

1
.gitignore vendored
View File

@@ -23,6 +23,7 @@ app/release/
# Keystore files
*.jks
*.keystore
keystore.properties
# Google Services (e.g. APIs or Firebase)
google-services.json

View File

@@ -1,3 +1,5 @@
import java.util.Properties
plugins {
id("com.android.application")
id("kotlin-android")
@@ -8,6 +10,21 @@ plugins {
alias(libs.plugins.ksp)
}
/*
'keystore.properties' should look like the following:
storeFile=my.keystore
storePassword=my_store_password
keyAlias=my_key_alias
keyPassword=my_key_password
*/
val keystoreProperties = Properties()
val keystoreFileExists = rootProject.file("keystore.properties").exists();
if (keystoreFileExists) {
keystoreProperties.load(rootProject.file("keystore.properties").inputStream())
}
android {
compileSdk = 35
@@ -30,10 +47,22 @@ android {
enable = true
}
signingConfigs {
if (keystoreFileExists) {
create("release") {
storeFile = keystoreProperties["storeFile"]?.let { file(it as String) }
storePassword = keystoreProperties["storePassword"] as String
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["keyPassword"] as String
}
}
}
buildTypes {
getByName("release") {
isMinifyEnabled = true
isShrinkResources = true
signingConfig = signingConfigs.findByName("release")?.takeIf { it.storeFile != null }
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"