🌠

〚Rust〛GitHub ActionsでtauriのAndroidビルドを行う

に公開

https://github.com/tauri-apps/tauri-action/issues/525#issuecomment-2339980065

これを元に少し手を加えた。

name: Build

on:
  push:
    branches:
      - main

env:
  CARGO_TERM_COLOR: always
  NDK_VERSION: 29.0.13113456

jobs:
  android:
    runs-on: ubuntu-latest
    steps:

    - uses: actions/checkout@v4

    - name: Setup Rust
      run: rustup update stable && rustup default stable
      # 実は最初からrustupできる
      # https://docs.github.com/ja/actions/use-cases-and-examples/building-and-testing/building-and-testing-rust#specifying-a-rust-version

    - name: Setup Rust targets
      run: rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android

    - name: Setup pnpm
      uses: pnpm/action-setup@v4
      with:
        version: 10

    - name: Install dependencies
      run: |
        sudo apt-get update
        sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
      # https://v2.tauri.app/ja/start/prerequisites/#linux で示されているもの

    - name: Setup Java
      uses: actions/setup-java@v4
      with:
          distribution: "temurin"
          java-version: "21"

    - name: Setup Android SDK
      uses: android-actions/setup-android@v3
      with:
        packages: "build-tools;36.0.0 ndk;${{ env.NDK_VERSION }} platform-tools platforms;android-35"
      # NDKなどもここで入れられる

    - name: Install Node.js dependencies
      run: pnpm install

    - name: Setup Android signing
      run: |
        cd src-tauri/gen/android
        echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" > keystore.properties
        echo "password=${{ secrets.ANDROID_KEY_PASSWORD }}" >> keystore.properties
        base64 -d <<< "${{ secrets.ANDROID_KEY_BASE64 }}" > $RUNNER_TEMP/keystore.jks
        echo "storeFile=$RUNNER_TEMP/keystore.jks" >> keystore.properties
      # https://v2.tauri.app/ja/distribute/sign/android/#configure-the-signing-key にActionsの例があるので踏襲する

    - name: Setup Android Environment
      run: |
        echo "NDK_HOME=$ANDROID_HOME/ndk/${{ env.NDK_VERSION }}/" > $GITHUB_ENV

    - name: Build
      run: pnpm tauri android build --ci

$ANDROID_HOME元々設定されているので、Buildステップのenv:で変に設定しようとするとWarn `ANDROID_HOME` isn't set; falling back to `ANDROID_SDK_ROOT`, which is deprecatedなどと言われる? ようだ。

Discussion