name: Android app CI on: # Build whenever a file that affects Android is changed by a push push: paths: - .github/workflows/android-app.yml - android/** - mullvad-daemon/** - mullvad-jni/** - mullvad-paths/** - mullvad-problem-report/** - mullvad-rpc/** - mullvad-types/** - talpid-core/** - talpid-platform-metadata/** - talpid-types/** - talpid-types/** - wireguard/** - Cargo.toml - build-apk.sh - update-api-metadata.sh - update-version-metadata.sh - version-metadata.sh # Build if requested manually from the Actions tab workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: # Checkout repository - uses: actions/checkout@v2 # Install Rust - uses: ATiltedTree/setup-rust@v1.0.4 with: rust-version: stable targets: aarch64-linux-android # Install Go - uses: actions/setup-go@v2.1.3 with: go-version: 1.16 # Install Android SDK - uses: maxim-lobanov/setup-android-tools@v1 with: packages: | platforms;android-30 build-tools;30.0.3 cache: true # Install Android NDK - id: install-android-ndk uses: nttld/setup-ndk@v1 with: ndk-version: r20b # Configure Cargo to use NDK toolchain - run: | cat >> $HOME/.cargo/config << EOF [target.aarch64-linux-android] ar = "${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar" linker = "${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang" EOF # Build APK - env: RUSTFLAGS: --deny warnings NDK_TOOLCHAIN_DIR: ${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin AR_aarch64_linux_android: ${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar CC_aarch64_linux_android: ${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang ARCHITECTURES: arm64 run: | ./wireguard/build-wireguard-go.sh --android --no-docker source env.sh aarch64-linux-android cargo build --target aarch64-linux-android --verbose --package mullvad-jni cd android ./gradlew --console plain assembleDebug ./gradlew testDebugUnitTest