name: Build Android on: push: tags: - "v*" workflow_dispatch: inputs: version: description: "Version tag (e.g., v1.0.0)" required: true default: "v1.0.0" jobs: build-android: runs-on: ubuntu-latest steps: - name: Free disk space run: | sudo rm -rf /usr/share/dotnet sudo rm -rf /opt/ghc sudo rm -rf /opt/hostedtoolcache/CodeQL sudo rm -rf /usr/local/share/boost sudo rm -rf /usr/share/swift sudo rm -rf /usr/local/.ghcup sudo docker image prune --all --force - name: Checkout repository uses: actions/checkout@v6 - name: Setup Java uses: actions/setup-java@v5 with: distribution: "temurin" java-version: "17" - name: Setup Go uses: actions/setup-go@v6 with: go-version: "1.25.8" cache-dependency-path: go_backend/go.sum - name: Cache Gradle uses: actions/cache@v5 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - name: Install Android SDK & NDK run: | yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses || true $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "ndk;29.0.14206865" "platforms;android-36" "build-tools;36.0.0" echo "ANDROID_NDK_HOME=$ANDROID_HOME/ndk/29.0.14206865" >> $GITHUB_ENV - name: Install gomobile run: | go install golang.org/x/mobile/cmd/gomobile@latest gomobile init - name: Build Go backend for Android working-directory: go_backend run: | mkdir -p ../android/app/libs gomobile bind -target=android -androidapi 24 -o ../android/app/libs/gobackend.aar . env: CGO_ENABLED: 1 - name: Setup Flutter uses: subosito/flutter-action@v2 with: channel: "stable" cache: true - name: Get Flutter dependencies run: flutter pub get - name: Build APK (Only arm64) run: flutter build apk --release --target-platform android-arm64 - name: Upload APK artifact uses: actions/upload-artifact@v6 with: name: SpotiFLAC-arm64-apk path: build/app/outputs/flutter-apk/app-release.apk