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: Install Linux build dependencies run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev - name: Publish compose-webview to mavenLocal working-directory: compose-webview run: | chmod +x gradlew mkdir -p src/jvmMain/resources/nucleus/native/linux-x64 touch src/jvmMain/resources/nucleus/native/linux-x64/libcompose_webview_linux.so ./gradlew publishToMavenLocal -x :webview-compose:buildNativeLinux -x :webview-compose:verifyPublicationCoordinates --no-daemon - 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 <