name: Test Android on: workflow_dispatch: push: paths: - "bdk-ffi/**" - "bdk-android/**" pull_request: paths: - "bdk-ffi/**" - "bdk-android/**" # The default Android NDK on the ubuntu-22.04 image is 25.2.9519653 # We replace the default environment variable ANDROID_NDK_ROOT: /usr/local/lib/android/sdk/ndk/25.2.9519653 # with an older version of the NDK (21.4.7075529) using the fix proposed here: https://github.com/actions/runner-images/issues/5930 # For information on why this is needed at the moment see issues #242 and #243, and PR #282 env: ANDROID_NDK_ROOT: /usr/local/lib/android/sdk/ndk/21.4.7075529 jobs: build: runs-on: ubuntu-20.04 steps: - name: "Install Android NDK 21.4.7075529" run: | ANDROID_ROOT=/usr/local/lib/android ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager echo "y" | $SDKMANAGER "ndk;21.4.7075529" - name: "Check out PR branch" uses: actions/checkout@v3 - name: "Cache" uses: actions/cache@v3 with: path: | ~/.cargo/registry ~/.cargo/git ./target key: ${{ runner.os }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }} - name: "Set up JDK" uses: actions/setup-java@v3 with: distribution: temurin java-version: 11 - name: "Set default Rust version to 1.67.0" run: rustup default 1.67.0 - name: "Install Rust Android targets" run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi - name: "Build Android library" run: | cd bdk-android ./gradlew buildAndroidLib # There are currently no unit tests for bdk-android and the integration tests require the macOS image # which is not working with the older NDK version we are using, so for now we just make sure that the library builds. # - name: "Run Android unit tests" # run: | # cd bdk-android # ./gradlew test --console=rich