Fix eew header #1255
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build Android | |
| # Pull requests only. A push to `main` is handled by release.yml, | |
| # which builds the signed, uploadable artifact — running this as well would | |
| # spend a second runner producing an unsigned one nobody installs. | |
| on: | |
| pull_request: | |
| branches: ["main"] | |
| jobs: | |
| changes: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| outputs: | |
| android: ${{ steps.filter.outputs.android }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dorny/paths-filter@v3 | |
| id: filter | |
| with: | |
| filters: | | |
| android: | |
| - 'android/**' | |
| - 'assets/**' | |
| - 'lib/**' | |
| - 'pubspec.yaml' | |
| Android: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.android == 'true' }} | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Java | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: "temurin" | |
| java-version: "25" | |
| cache: "gradle" | |
| # Flutter and Dart come from mise.toml, the same pin CI and every laptop | |
| # use. Not subosito/flutter-action with `channel: stable`: that resolves | |
| # to whatever stable is on the day, so this job could ship an artifact | |
| # built against an SDK nobody chose, and nothing in the build log would | |
| # say so. See AGENTS.md → Toolchain. | |
| - name: Install toolchain (mise) | |
| uses: jdx/mise-action@v4 | |
| - name: Cache Gradle | |
| uses: actions/cache@v4 | |
| env: | |
| cache-name: cache-gradle | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/wrapper/gradle-wrapper.properties', '**/build.gradle') }} | |
| restore-keys: | | |
| ${{ runner.os }}-build-${{ env.cache-name }}- | |
| ${{ runner.os }}-build- | |
| - name: Cache Android NDK | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| /usr/local/lib/android/sdk/ndk/27.0.12077973 | |
| /usr/local/lib/android/sdk/ndk/28.2.13676358 | |
| key: ${{ runner.os }}-ndk-27-28 | |
| - name: Cache Android sdk | |
| uses: actions/cache@v4 | |
| env: | |
| cache-name: cache-Android-sdk | |
| with: | |
| path: | | |
| /usr/local/lib/android/sdk/platforms/android-31 | |
| /usr/local/lib/android/sdk/platforms/android-33 | |
| key: ${{ runner.os }}-android-platforms-${{ env.cache-name }}-${{ hashFiles('android/gradle.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-build-${{ env.cache-name }}- | |
| ${{ runner.os }}-build- | |
| - name: Install dependencies and run build_runner | |
| run: | | |
| bash tool/dev/deps.sh | |
| bash tool/dev/codegen.sh | |
| - name: Decode keystore | |
| run: | | |
| echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > android/app/my-release-key.jks | |
| - name: Create key.properties | |
| run: | | |
| cat > android/key.properties << EOF | |
| storePassword=${{ secrets.KEYSTORE_PASSWORD }} | |
| keyPassword=${{ secrets.KEY_PASSWORD }} | |
| keyAlias=${{ secrets.KEY_ALIAS }} | |
| storeFile=my-release-key.jks | |
| EOF | |
| - name: Build Release APK | |
| run: bash tool/dev/build.sh android | |
| - name: Upload Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: DPIP-Android-Release | |
| path: build/app/outputs/flutter-apk/*.apk | |
| retention-days: 7 | |
| compression-level: 6 |