From 2e4eb2fb30198719eeae2977147b3d31c633bc9f Mon Sep 17 00:00:00 2001 From: Purefin Dev Date: Sat, 23 May 2026 08:50:25 +0000 Subject: [PATCH 1/3] feat: add red debug icon and separate debug update URL - Replace hardcoded vector fill color with @color/ic_launcher_foreground - Override foreground to #E53935 (red) for debug builds - Use manifest placeholders for build-type specific update URLs - Update release URL to https://apks.t.bbara.hu/apks/purefin-app/update.json - Add APK repository upload guide to README --- README.md | 39 ++++++++++++++++++- app/build.gradle.kts | 2 + app/src/debug/res/values/colors.xml | 4 ++ app/src/main/AndroidManifest.xml | 2 +- .../res/drawable/purefin_logo_launcher.xml | 4 +- app/src/main/res/values/colors.xml | 1 + 6 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 app/src/debug/res/values/colors.xml diff --git a/README.md b/README.md index 15e9a862..458e7e4a 100644 --- a/README.md +++ b/README.md @@ -53,9 +53,44 @@ cd purefin - For Android devices: Select your device/emulator and click Run - For Android TV: Select an Android TV emulator or device -### Download APK +### APK Repository -_Release builds coming soon_ +APKs are distributed via the [APK Version Manager](https://apks.t.bbara.hu/docs) at `https://apks.t.bbara.hu`. + +#### App names + +| Variant | App name | Update URL | +|---------|----------|------------| +| Release (phone) | `purefin-app` | `https://apks.t.bbara.hu/apks/purefin-app/update.json` | +| Debug (phone) | `purefin-app-debug` | `https://apks.t.bbara.hu/apks/purefin-app-debug/update.json` | +| Release (TV) | `purefin-tv` | `https://apks.t.bbara.hu/apks/purefin-tv/update.json` | + +#### Building + +```bash +# Phone +./gradlew :app:assembleDebug # debug APK +./gradlew :app:assembleRelease # release APK (unsigned) + +# Android TV +./gradlew :app-tv:assembleDebug # debug APK +./gradlew :app-tv:assembleRelease # release APK (unsigned) +``` + +APK outputs go to `app/build/outputs/apk//` and `app-tv/build/outputs/apk//`. + +#### Uploading + +Upload via the API at `POST /api/apps/{app_name}/upload`: + +```bash +curl -X POST "https://apks.t.bbara.hu/api/apps/purefin-app-debug/upload" \ + -F "apk_file=@app/build/outputs/apk/debug/app-debug.apk" \ + -F "version_code=$(grep purefinVersionCode gradle.properties | cut -d= -f2)" \ + -F "version_name=0.1-debug" +``` + +The `version_code` is defined in `gradle.properties` (`purefinVersionCode` for phone, `purefinTvVersionCode` for TV). The `version_name` is `0.1` for release or `0.1-debug` for debug. Both fields are required — the server cannot auto-extract them from the APK. ## Usage diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 99adfcd8..09b3dda3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -26,6 +26,7 @@ android { debug { applicationIdSuffix = ".debug" versionNameSuffix = "-debug" + manifestPlaceholders["updateManifestUrl"] = "https://apks.t.bbara.hu/apks/purefin-app-debug/update.json" } release { // Enables code-related app optimization. @@ -33,6 +34,7 @@ android { // Enables resource shrinking. isShrinkResources = true + manifestPlaceholders["updateManifestUrl"] = "https://apks.t.bbara.hu/apks/purefin-app/update.json" proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) diff --git a/app/src/debug/res/values/colors.xml b/app/src/debug/res/values/colors.xml new file mode 100644 index 00000000..57c50308 --- /dev/null +++ b/app/src/debug/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #E53935 + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 897e8a1e..fd0b7ef2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -22,7 +22,7 @@ android:theme="@style/Theme.Purefin"> + android:value="${updateManifestUrl}" /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 5b4e49f1..c3c3ea90 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,4 +1,5 @@ #131216 + #7C42F0 \ No newline at end of file From 8d73974add4b6b5099b854a528d00dbbf3775a64 Mon Sep 17 00:00:00 2001 From: Barnabas Balogh Date: Sat, 23 May 2026 09:31:47 +0000 Subject: [PATCH 2/3] feat(build): add separate versionCode for debug build type Renamed purefinVersionCode to purefinReleaseVersionCode and added purefinDebugVersionCode to allow independent version tracking for debug and release builds. --- README.md | 4 ++-- app/build.gradle.kts | 3 ++- gradle.properties | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 458e7e4a..dc268bfb 100644 --- a/README.md +++ b/README.md @@ -86,11 +86,11 @@ Upload via the API at `POST /api/apps/{app_name}/upload`: ```bash curl -X POST "https://apks.t.bbara.hu/api/apps/purefin-app-debug/upload" \ -F "apk_file=@app/build/outputs/apk/debug/app-debug.apk" \ - -F "version_code=$(grep purefinVersionCode gradle.properties | cut -d= -f2)" \ + -F "version_code=$(grep purefinDebugVersionCode gradle.properties | cut -d= -f2)" \ -F "version_name=0.1-debug" ``` -The `version_code` is defined in `gradle.properties` (`purefinVersionCode` for phone, `purefinTvVersionCode` for TV). The `version_name` is `0.1` for release or `0.1-debug` for debug. Both fields are required — the server cannot auto-extract them from the APK. +The `version_code` is defined in `gradle.properties` (`purefinReleaseVersionCode` for phone release, `purefinDebugVersionCode` for phone debug, `purefinTvVersionCode` for TV). The `version_name` is `0.1` for release or `0.1-debug` for debug. Both fields are required — the server cannot auto-extract them from the APK. ## Usage diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 09b3dda3..658848eb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -17,7 +17,6 @@ android { applicationId = "hu.bbara.purefin" minSdk = 29 targetSdk = 36 - versionCode = providers.gradleProperty("purefinVersionCode").get().toInt() versionName = "0.1" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -25,10 +24,12 @@ android { buildTypes { debug { applicationIdSuffix = ".debug" + versionCode = providers.gradleProperty("purefinDebugVersionCode").get().toInt() versionNameSuffix = "-debug" manifestPlaceholders["updateManifestUrl"] = "https://apks.t.bbara.hu/apks/purefin-app-debug/update.json" } release { + versionCode = providers.gradleProperty("purefinReleaseVersionCode").get().toInt() // Enables code-related app optimization. isMinifyEnabled = true diff --git a/gradle.properties b/gradle.properties index 9baf1fd2..6fb79afb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -28,5 +28,6 @@ android.dependency.useConstraints=true android.r8.strictFullModeForKeepRules=false android.builtInKotlin=false android.newDsl=false -purefinVersionCode=1000018 +purefinReleaseVersionCode=1000018 +purefinDebugVersionCode=1000000 purefinTvVersionCode=2000009 From 6e90a9e225afafab99a54e92593f9424f568f6d1 Mon Sep 17 00:00:00 2001 From: Barnabas Balogh Date: Sat, 23 May 2026 11:13:07 +0200 Subject: [PATCH 3/3] feat(build): update debug and release update URLs in README and build.gradle.kts --- README.md | 10 +++++----- app/build.gradle.kts | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index dc268bfb..df45a89a 100644 --- a/README.md +++ b/README.md @@ -59,11 +59,11 @@ APKs are distributed via the [APK Version Manager](https://apks.t.bbara.hu/docs) #### App names -| Variant | App name | Update URL | -|---------|----------|------------| -| Release (phone) | `purefin-app` | `https://apks.t.bbara.hu/apks/purefin-app/update.json` | -| Debug (phone) | `purefin-app-debug` | `https://apks.t.bbara.hu/apks/purefin-app-debug/update.json` | -| Release (TV) | `purefin-tv` | `https://apks.t.bbara.hu/apks/purefin-tv/update.json` | +| Variant | App name | Update URL | +|---------|----------|--------------------------------------------------------------| +| Release (phone) | `purefin-app` | `https://apks.t.bbara.hu/apps/purefin-app/update.json` | +| Debug (phone) | `purefin-app-debug` | `https://apks.t.bbara.hu/apps/purefin-app-debug/update.json` | +| Release (TV) | `purefin-tv` | `https://apks.t.bbara.hu/apps/purefin-tv/update.json` | #### Building diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 658848eb..80024a60 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -26,7 +26,7 @@ android { applicationIdSuffix = ".debug" versionCode = providers.gradleProperty("purefinDebugVersionCode").get().toInt() versionNameSuffix = "-debug" - manifestPlaceholders["updateManifestUrl"] = "https://apks.t.bbara.hu/apks/purefin-app-debug/update.json" + manifestPlaceholders["updateManifestUrl"] = "https://apks.t.bbara.hu/apps/purefin-app-debug/update.json" } release { versionCode = providers.gradleProperty("purefinReleaseVersionCode").get().toInt() @@ -35,7 +35,7 @@ android { // Enables resource shrinking. isShrinkResources = true - manifestPlaceholders["updateManifestUrl"] = "https://apks.t.bbara.hu/apks/purefin-app/update.json" + manifestPlaceholders["updateManifestUrl"] = "https://apks.t.bbara.hu/apps/purefin-app/update.json" proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" )