name: Android Build on: push: branches: [ master, main ] pull_request: branches: [ master, main ] workflow_dispatch: jobs: build: runs-on: android steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: gradle - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle run: ./gradlew build - name: Build Debug APK run: ./gradlew assembleDebug - name: Upload APK uses: actions/upload-artifact@v4 with: name: app-debug path: app/build/outputs/apk/debug/app-debug.apk release: needs: build if: startsWith(github.ref, 'refs/tags/') runs-on: android steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: gradle - name: Decode Keystore if: ${{ env.ANDROID_KEYSTORE_BASE64 }} run: | echo $ANDROID_KEYSTORE_BASE64 | base64 -d > keystore.jks env: ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} - name: Build Release APK run: ./gradlew assembleRelease env: ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }} - name: Create Release uses: softprops/action-gh-release@v1 with: files: app/build/outputs/apk/release/app-release.apk env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}