This repository was archived by the owner on Feb 11, 2026. It is now read-only.
Build and Release #177
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 the lib | |
| on: | |
| workflow_dispatch: | |
| release: | |
| types: [published] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Android SDK | |
| uses: android-actions/setup-android@v3 | |
| - name: Install SDK components | |
| run: | | |
| # Remove potentially corrupted pre-installed android-35 | |
| rm -rf $ANDROID_HOME/platforms/android-35 | |
| # Reinstall fresh copies | |
| sdkmanager --install "platforms;android-35" "build-tools;35.0.0" | |
| - name: Set up NDK | |
| uses: nttld/setup-ndk@v1 | |
| id: setup-ndk | |
| with: | |
| ndk-version: r28 | |
| add-to-path: true | |
| - name: Configure NDK for Gradle | |
| run: | | |
| NDK_PATH="${{ steps.setup-ndk.outputs.ndk-path }}" | |
| TOOLCHAIN="$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin" | |
| echo "ANDROID_NDK_HOME=$NDK_PATH" >> $GITHUB_ENV | |
| echo "ANDROID_NDK_ROOT=$NDK_PATH" >> $GITHUB_ENV | |
| echo "ndk.dir=$NDK_PATH" >> local.properties | |
| echo "sdk.dir=$ANDROID_HOME" >> local.properties | |
| # Add toolchain to PATH so symlinked tools are found | |
| echo "$TOOLCHAIN" >> $GITHUB_PATH | |
| # Create symlinks for missing binutils (OpenSSL build expects these) | |
| ln -sf "$TOOLCHAIN/llvm-ar" "$TOOLCHAIN/arm-linux-androideabi-ar" | |
| ln -sf "$TOOLCHAIN/llvm-ar" "$TOOLCHAIN/aarch64-linux-android-ar" | |
| ln -sf "$TOOLCHAIN/llvm-ar" "$TOOLCHAIN/i686-linux-android-ar" | |
| ln -sf "$TOOLCHAIN/llvm-ar" "$TOOLCHAIN/x86_64-linux-android-ar" | |
| ln -sf "$TOOLCHAIN/llvm-ranlib" "$TOOLCHAIN/arm-linux-androideabi-ranlib" | |
| ln -sf "$TOOLCHAIN/llvm-ranlib" "$TOOLCHAIN/aarch64-linux-android-ranlib" | |
| ln -sf "$TOOLCHAIN/llvm-ranlib" "$TOOLCHAIN/i686-linux-android-ranlib" | |
| ln -sf "$TOOLCHAIN/llvm-ranlib" "$TOOLCHAIN/x86_64-linux-android-ranlib" | |
| # Also set env vars for cc-rs crate | |
| echo "AR_aarch64_linux_android=$TOOLCHAIN/llvm-ar" >> $GITHUB_ENV | |
| echo "AR_armv7_linux_androideabi=$TOOLCHAIN/llvm-ar" >> $GITHUB_ENV | |
| echo "AR_x86_64_linux_android=$TOOLCHAIN/llvm-ar" >> $GITHUB_ENV | |
| echo "AR_i686_linux_android=$TOOLCHAIN/llvm-ar" >> $GITHUB_ENV | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Install latest stable Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Validate Gradle wrapper | |
| uses: gradle/actions/wrapper-validation@v4 | |
| - name: Install Cargo targets | |
| run: rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android i686-linux-android | |
| - name: Build | |
| run: | | |
| export PATH="${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH" | |
| ./gradlew lib:assembleRelease lib:releaseSourcesJar | |
| - name: Prepare release artifacts | |
| run: | | |
| mkdir -p release-artifacts | |
| cp ./lib/build/outputs/aar/lib-release.aar release-artifacts/mobile.aar | |
| cp ./lib/build/libs/*-sources.jar release-artifacts/mobile-sources.jar | |
| - name: Upload Release AAR | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: release-lib | |
| path: release-artifacts/mobile.aar | |
| - name: Upload Sources JAR | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: release-sources | |
| path: release-artifacts/mobile-sources.jar | |
| - name: Attach artifacts to Release | |
| if: github.event_name == 'release' | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: | | |
| release-artifacts/mobile.aar | |
| release-artifacts/mobile-sources.jar |