summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDirk Sierd de Vries <contact@lecapuchon.nl>2026-08-09 20:06:03 +0200
committerDirk Sierd de Vries <contact@lecapuchon.nl>2026-08-09 20:06:03 +0200
commit793c6f5c5d51210b2517ed83506d295061a46d68 (patch)
tree0739f3d49878c1dd8caceab19ea232e201cb78df /app
parent919431a02604a3dfb6950e42541318cb9a1f855d (diff)
downloadSidePhOnelauncher-793c6f5c5d51210b2517ed83506d295061a46d68.tar.gz
SidePhOnelauncher-793c6f5c5d51210b2517ed83506d295061a46d68.tar.bz2
SidePhOnelauncher-793c6f5c5d51210b2517ed83506d295061a46d68.zip
Automate signed APK releases on push
- build and publish a GitHub release on every push to main - support stable release signing from GitHub Actions secrets - derive a unique CI versionCode and versionName from the workflow run number so Android and Obtainium can detect updates
Diffstat (limited to 'app')
-rw-r--r--app/build.gradle32
1 files changed, 30 insertions, 2 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 12e5161..90b0fc5 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,6 +1,20 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
+def releaseKeystorePath = System.getenv("ANDROID_KEYSTORE_PATH") ?: (project.hasProperty("ANDROID_KEYSTORE_PATH") ? project.property("ANDROID_KEYSTORE_PATH") : null)
+def releaseStorePassword = System.getenv("ANDROID_STORE_PASSWORD") ?: (project.hasProperty("ANDROID_STORE_PASSWORD") ? project.property("ANDROID_STORE_PASSWORD") : null)
+def releaseKeyAlias = System.getenv("ANDROID_KEY_ALIAS") ?: (project.hasProperty("ANDROID_KEY_ALIAS") ? project.property("ANDROID_KEY_ALIAS") : null)
+def releaseKeyPassword = System.getenv("ANDROID_KEY_PASSWORD") ?: (project.hasProperty("ANDROID_KEY_PASSWORD") ? project.property("ANDROID_KEY_PASSWORD") : null)
+def ciRunNumberRaw = System.getenv("GITHUB_RUN_NUMBER") ?: (project.hasProperty("GITHUB_RUN_NUMBER") ? project.property("GITHUB_RUN_NUMBER") : null)
+def ciRunNumber = ciRunNumberRaw?.isInteger() ? ciRunNumberRaw.toInteger() : null
+
+def baseVersionCode = 109
+def baseVersionName = "v6.7.1"
+def ciVersionCode = ciRunNumber != null ? (baseVersionCode * 100000 + ciRunNumber) : baseVersionCode
+def ciVersionName = ciRunNumber != null ? "${baseVersionName}+${ciRunNumber}" : baseVersionName
+
+def hasReleaseSigning = releaseKeystorePath && releaseStorePassword && releaseKeyAlias && releaseKeyPassword
+
android {
compileSdk 35
@@ -17,17 +31,31 @@ android {
applicationId "app.olauncher"
minSdkVersion 24
targetSdkVersion 35
- versionCode 109
- versionName "v6.7.1"
+ versionCode ciVersionCode
+ versionName ciVersionName
resourceConfigurations += ["en", "ar", "de", "es-rES", "es-rUS", "fr", "he", "hr", "hu", "in", "it", "ja", "nl", "pl", "pt-rBR", "ru-rRU", "sv", "tr", "uk", "zh"]
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
+ if (hasReleaseSigning) {
+ signingConfigs {
+ release {
+ storeFile file(releaseKeystorePath)
+ storePassword releaseStorePassword
+ keyAlias releaseKeyAlias
+ keyPassword releaseKeyPassword
+ }
+ }
+ }
+
buildTypes {
release {
debuggable false
minifyEnabled true
+ if (hasReleaseSigning) {
+ signingConfig signingConfigs.release
+ }
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {