rust-apk 1.0.0

Build, align, sign, verify, and inspect Android APKs in pure Rust
Documentation
name: Rust
on: [push, pull_request]
permissions:
  contents: read
jobs:
  check:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        features: ["", "--no-default-features"]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v7
        with:
          fetch-depth: 0
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
      - run: cargo fmt --check
      - run: cargo clippy --locked --all-targets ${{ matrix.features }} -- -D warnings
      - run: cargo test --locked ${{ matrix.features }}
      - if: matrix.os == 'ubuntu-latest' && matrix.features == ''
        run: cargo package --locked
      - if: matrix.os == 'ubuntu-latest' && matrix.features == ''
        run: cargo fmt --manifest-path tools/gen-framework/Cargo.toml -- --check
      - if: matrix.os == 'ubuntu-latest' && matrix.features == ''
        run: cargo check --manifest-path tools/gen-framework/Cargo.toml

  msrv:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: dtolnay/rust-toolchain@1.88.0
      - run: cargo check --locked --all-targets

  android:
    runs-on: ubuntu-latest
    env:
      APK_RS_REQUIRE_ORACLES: "1"
    steps:
      - uses: actions/checkout@v7
      - uses: dtolnay/rust-toolchain@stable
      - uses: actions/setup-java@v6
        with:
          distribution: temurin
          java-version: "21"
      - uses: android-actions/setup-android@v4
        with:
          cmdline-tools-version: "12266719"
          packages: "build-tools;36.0.0 platforms;android-35"
      - run: >-
          env AAPT2="$ANDROID_HOME/build-tools/36.0.0/aapt2"
          APKSIGNER="$ANDROID_HOME/build-tools/36.0.0/apksigner"
          ANDROID_JAR="$ANDROID_HOME/platforms/android-35/android.jar"
          cargo test --locked