diff --git a/.github/workflows/build-android-apk.yml b/.github/workflows/build-android-apk.yml new file mode 100644 index 00000000..8f1cd348 --- /dev/null +++ b/.github/workflows/build-android-apk.yml @@ -0,0 +1,115 @@ +name: Build Android APK + +on: + workflow_dispatch: + inputs: + tag: + description: 'Release tag (e.g. v6.0.0-custom or nightly)' + required: false + default: 'nightly' + +permissions: + contents: write + +jobs: + build-apk: + name: Build Spotube Android APK + runs-on: ubuntu-latest + timeout-minutes: 90 + steps: + - name: Checkout spotube + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Checkout ComposeNativeWebview + uses: actions/checkout@v4 + with: + repository: KRTirtho/ComposeNativeWebview + ref: cbd36f88927298a28a2d64c6acf7ec3b2def6f9d + path: compose-webview + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + + - name: Set up Android SDK + uses: android-actions/setup-android@v4 + + - name: Set up Rust + uses: dtolnay/rust-toolchain@stable + + - name: Set up Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Publish compose-webview to mavenLocal + working-directory: compose-webview + run: | + chmod +x gradlew + ./gradlew publishToMavenLocal + + - name: Configure Android signing + working-directory: composeApp + env: + KEYSTORE: ${{ secrets.KEYSTORE }} + KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} + KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }} + KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }} + run: | + chmod +x ../gradlew + if [ -n "$KEYSTORE" ]; then + echo "$KEYSTORE" | base64 --decode > "${{ github.workspace }}/composeApp/upload-keystore.jks" + cat >> local.properties <> local.properties <