[READ-ONLY] Mirror of https://github.com/probablykasper/ferrum. Music library app for Mac, Linux and Windows ferrum.kasper.space
electron linux macos music music-library music-player napi windows
0

Configure Feed

Select the types of activity you want to include in your feed.

Set up Android code signing

Kasper (Mar 5, 2026, 1:28 PM +0100) 46e1c816 f3da49f7

+40 -7
+8
.github/workflows/ci.yml
··· 81 81 - run: npm install 82 82 working-directory: mobile 83 83 84 + - name: Android signing setup 85 + working-directory: mobile/src-tauri/gen/android 86 + run: | 87 + echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" > keystore.properties 88 + echo "password=${{ secrets.ANDROID_KEY_PASSWORD }}" >> keystore.properties 89 + base64 -d <<< "${{ secrets.ANDROID_KEY_BASE64 }}" > $RUNNER_TEMP/keystore.jks 90 + echo "storeFile=$RUNNER_TEMP/keystore.jks" >> keystore.properties 91 + 84 92 - name: Build 85 93 # uploadWorkflowArtifacts and mobile are not released 86 94 uses: tauri-apps/tauri-action@a1b01e690374452a209dd44f6de089dda9003d3d
+13 -7
.github/workflows/release.yml
··· 88 88 link-to-sdk: true 89 89 90 90 - name: Install Android targets 91 - run: rustup target add aarch64-linux-android x86_64-linux-android 91 + run: rustup target add ${{ matrix.arch }}-linux-android 92 92 93 93 - run: npm install 94 + working-directory: mobile 94 95 95 - - name: Build 96 - env: 97 - NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} 96 + - name: Android signing setup 97 + working-directory: mobile/src-tauri/gen/android 98 98 run: | 99 - npm run tauri android build 99 + echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" > keystore.properties 100 + echo "password=${{ secrets.ANDROID_KEY_PASSWORD }}" >> keystore.properties 101 + base64 -d <<< "${{ secrets.ANDROID_KEY_BASE64 }}" > $RUNNER_TEMP/keystore.jks 102 + echo "storeFile=$RUNNER_TEMP/keystore.jks" >> keystore.properties 100 103 101 104 - name: Build 102 - uses: tauri-apps/tauri-action@v0 105 + # uploadWorkflowArtifacts and mobile are not released 106 + uses: tauri-apps/tauri-action@a1b01e690374452a209dd44f6de089dda9003d3d 103 107 env: 104 108 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 105 109 with: 110 + projectPath: mobile 111 + uploadWorkflowArtifacts: true 106 112 mobile: android 107 113 releaseName: ${{ github.ref_name }} 108 114 releaseDraft: true 109 - args: --verbose --debug --apk --split-per-abi ${{ matrix.args }} 115 + args: --verbose --apk --split-per-abi --target ${{ matrix.tauri_target }}
+16
mobile/src-tauri/gen/android/app/build.gradle.kts
··· 1 + import java.io.FileInputStream 1 2 import java.util.Properties 2 3 3 4 plugins { ··· 24 25 versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt() 25 26 versionName = tauriProperties.getProperty("tauri.android.versionName", "1.0") 26 27 } 28 + signingConfigs { 29 + create("release") { 30 + val keystorePropertiesFile = rootProject.file("keystore.properties") 31 + val keystoreProperties = Properties() 32 + if (keystorePropertiesFile.exists()) { 33 + keystoreProperties.load(FileInputStream(keystorePropertiesFile)) 34 + } 35 + 36 + keyAlias = keystoreProperties["keyAlias"] as String 37 + keyPassword = keystoreProperties["password"] as String 38 + storeFile = file(keystoreProperties["storeFile"] as String) 39 + storePassword = keystoreProperties["password"] as String 40 + } 41 + } 27 42 buildTypes { 28 43 getByName("debug") { 29 44 manifestPlaceholders["usesCleartextTraffic"] = "true" ··· 37 52 } 38 53 } 39 54 getByName("release") { 55 + signingConfig = signingConfigs.getByName("release") 40 56 isMinifyEnabled = true 41 57 proguardFiles( 42 58 *fileTree(".") { include("**/*.pro") }
+3
mobile/src-tauri/gen/android/keystore.properties
··· 1 + keyAlias=placeholder 2 + password=placeholder 3 + storeFile=placeholder