v1.5.0-hotfix3: Decode keystore in workflow

This commit is contained in:
zarzet
2026-01-02 04:09:49 +07:00
parent 6d5c9d0f91
commit 4caa803eb2
6 changed files with 19 additions and 13 deletions
+7 -1
View File
@@ -86,10 +86,16 @@ jobs:
- name: Generate app icons - name: Generate app icons
run: dart run flutter_launcher_icons run: dart run flutter_launcher_icons
- name: Decode Keystore
run: |
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > android/app/ci-keystore.jks
ls -la android/app/ci-keystore.jks
env:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
- name: Build APK (Release) - name: Build APK (Release)
run: flutter build apk --release --split-per-abi run: flutter build apk --release --split-per-abi
env: env:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }} KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
+5
View File
@@ -1,5 +1,10 @@
# Changelog # Changelog
## [1.5.0-hotfix3] - 2026-01-02
### Fixed
- **App Signing**: Decode keystore in workflow before Gradle evaluation
## [1.5.0-hotfix2] - 2026-01-02 ## [1.5.0-hotfix2] - 2026-01-02
### Fixed ### Fixed
Binary file not shown.
+4 -9
View File
@@ -5,20 +5,15 @@ plugins {
id("dev.flutter.flutter-gradle-plugin") id("dev.flutter.flutter-gradle-plugin")
} }
// Load keystore properties from file if exists // Load keystore properties from file if exists (local build)
val keystorePropertiesFile = rootProject.file("keystore.properties") val keystorePropertiesFile = rootProject.file("keystore.properties")
val keystoreProperties = java.util.Properties() val keystoreProperties = java.util.Properties()
if (keystorePropertiesFile.exists()) { if (keystorePropertiesFile.exists()) {
keystoreProperties.load(java.io.FileInputStream(keystorePropertiesFile)) keystoreProperties.load(java.io.FileInputStream(keystorePropertiesFile))
} }
// Decode keystore from base64 if running in CI // CI keystore file (decoded by workflow)
val ciKeystoreFile = file("${project.projectDir}/ci-keystore.jks") val ciKeystoreFile = file("ci-keystore.jks")
if (System.getenv("KEYSTORE_BASE64") != null && !ciKeystoreFile.exists()) {
ciKeystoreFile.writeBytes(
java.util.Base64.getDecoder().decode(System.getenv("KEYSTORE_BASE64"))
)
}
android { android {
namespace = "com.zarz.spotiflac" namespace = "com.zarz.spotiflac"
@@ -46,7 +41,7 @@ android {
keyAlias = keystoreProperties["keyAlias"] as String keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["keyPassword"] as String keyPassword = keystoreProperties["keyPassword"] as String
} else if (ciKeystoreFile.exists()) { } else if (ciKeystoreFile.exists()) {
// CI/CD build: use decoded keystore // CI/CD build: use decoded keystore from workflow
storeFile = ciKeystoreFile storeFile = ciKeystoreFile
storePassword = System.getenv("KEYSTORE_PASSWORD") storePassword = System.getenv("KEYSTORE_PASSWORD")
keyAlias = System.getenv("KEY_ALIAS") keyAlias = System.getenv("KEY_ALIAS")
+2 -2
View File
@@ -1,8 +1,8 @@
/// App version and info constants /// App version and info constants
/// Update version here only - all other files will reference this /// Update version here only - all other files will reference this
class AppInfo { class AppInfo {
static const String version = '1.5.0-hotfix2'; static const String version = '1.5.0-hotfix3';
static const String buildNumber = '16'; static const String buildNumber = '17';
static const String fullVersion = '$version+$buildNumber'; static const String fullVersion = '$version+$buildNumber';
static const String appName = 'SpotiFLAC'; static const String appName = 'SpotiFLAC';
+1 -1
View File
@@ -1,7 +1,7 @@
name: spotiflac_android name: spotiflac_android
description: Download Spotify tracks in FLAC from Tidal, Qobuz & Amazon Music description: Download Spotify tracks in FLAC from Tidal, Qobuz & Amazon Music
publish_to: 'none' publish_to: 'none'
version: 1.5.0+16 version: 1.5.0+17
environment: environment:
sdk: ^3.10.0 sdk: ^3.10.0