diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 498bd62..d2ee3f5 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -7,9 +7,9 @@ on: - '[0-9]+.[0-9]+.[0-9]+' pull_request: env: - SDK_BUILD_TOOLS_VERSION: '33.0.2' - SDK_CMDLINE_TOOLS_VERSION: '9.0' + SDK_BUILD_TOOLS_VERSION: '34.0.0' NDK_VERSION: '25.2.9519653' + ANDROID_PLATFORM: '34' jobs: format: runs-on: ubuntu-latest @@ -57,18 +57,15 @@ jobs: java-version: 17 - name: Setup Android SDK uses: android-actions/setup-android@v3 - - name: Set Up Android tools - run: | - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }}" - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "cmdline-tools;${{ env.SDK_CMDLINE_TOOLS_VERSION }}" - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "ndk;${{ env.NDK_VERSION }}" - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "platforms;android-30" + with: + log-accepted-android-sdk-licenses: false + packages: build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }} ndk;${{ env.NDK_VERSION }} platforms;android-${{ env.ANDROID_PLATFORM }} - name: Config Android NDK env: TRIPLE: x86_64-linux-android run: | echo "$ANDROID_SDK_ROOT/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH - for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT; do + for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT NDK_HOME; do echo "$var=$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" >> $GITHUB_ENV done TRIPLE_ENV=$(echo $TRIPLE | tr '-' '_') @@ -115,16 +112,13 @@ jobs: java-version: 17 - name: Setup Android SDK uses: android-actions/setup-android@v3 - - name: Set Up Android tools - run: | - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }}" - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "cmdline-tools;${{ env.SDK_CMDLINE_TOOLS_VERSION }}" - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "ndk;${{ env.NDK_VERSION }}" - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "platforms;android-30" + with: + log-accepted-android-sdk-licenses: false + packages: build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }} ndk;${{ env.NDK_VERSION }} platforms;android-${{ env.ANDROID_PLATFORM }} - name: Config Android NDK run: | echo "$ANDROID_SDK_ROOT/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH - for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT; do + for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT NDK_HOME; do echo "$var=$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" >> $GITHUB_ENV done - name: Setup Rust ${{ matrix.rust }} [${{ matrix.target }}] @@ -173,7 +167,7 @@ jobs: if: matrix.rust == 'stable' && matrix.profile == 'release' uses: actions/upload-artifact@v4 with: - name: bindings + name: bindings-${{ matrix.target }} path: bindings overwrite: true - name: Archive library @@ -183,7 +177,7 @@ jobs: if: matrix.rust == 'stable' uses: actions/upload-artifact@v4 with: - name: library + name: library-${{ matrix.target }}-${{ matrix.profile }} path: liboboe-ext_${{ matrix.target }}_${{ matrix.profile }}.tar.gz overwrite: true @@ -197,9 +191,10 @@ jobs: with: submodules: true - name: Download bindings - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: - name: bindings + pattern: bindings-* + merge-multiple: true path: sys/src - name: Create Pull Request uses: peter-evans/create-pull-request@v3 @@ -215,7 +210,7 @@ jobs: build-demo: needs: - build - - cargo-apk + - cargo-mobile2 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -228,21 +223,27 @@ jobs: java-version: 17 - name: Setup Android SDK uses: android-actions/setup-android@v3 - - name: Set Up Android tools + with: + log-accepted-android-sdk-licenses: false + packages: build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }} ndk;${{ env.NDK_VERSION }} platforms;android-${{ env.ANDROID_PLATFORM }} + - name: Config Android NDK run: | - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }}" - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "cmdline-tools;${{ env.SDK_CMDLINE_TOOLS_VERSION }}" - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "ndk;${{ env.NDK_VERSION }}" - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "platforms;android-30" + echo "$ANDROID_SDK_ROOT/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH + for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT NDK_HOME; do + echo "$var=$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" >> $GITHUB_ENV + done - name: Setup Rust uses: hecrj/setup-rust-action@v1 with: targets: armv7-linux-androideabi, aarch64-linux-android, i686-linux-android, x86_64-linux-android - - name: Setup Cargo apk + - name: Setup Cargo mobile uses: actions/cache@v4 with: - path: ~/.cargo/bin/cargo-apk - key: ${{ runner.os }}-cargo-apk + path: | + ~/.cargo/bin/cargo-android + ~/.cargo/bin/cargo-mobile + ~/.cargo/.cargo-mobile2 + key: ${{ runner.os }}-cargo-mobile2 - uses: Swatinem/rust-cache@v2 - name: Create signing key run: | @@ -254,13 +255,16 @@ jobs: # use existing keystore to sign apk sed -i 's/keystore_password = "android"/keystore_password = "${{ secrets.APK_KEYSTORE_PASSWORD }}"/' demo/Cargo.toml fi + - name: Init demo apk + run: | + cd demo && cargo module init && sed -ri 's/((compile|target)Sdk *= *)33/\134/g' gen/android/app/build.gradle.kts - name: Build demo apk - run: cargo apk build --manifest-path demo/Cargo.toml --release + run: cd demo && cargo mobile android apk build --release --split-per-abi - name: Upload demo apk uses: actions/upload-artifact@v4 with: name: apk - path: target/release/apk/oboe-demo.apk + path: demo/gen/android/app/build/outputs/apk/*/release/*.apk release: if: github.repository == 'katyo/oboe-rs' && startsWith(github.ref, 'refs/tags/') @@ -270,11 +274,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Download libraries - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: - name: library + pattern: library-* + merge-multiple: true - name: Download demo - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: apk - name: Create release @@ -322,15 +327,18 @@ jobs: if: steps.cache.outputs.cache-hit != 'true' run: cargo install cargo-ndk --force - cargo-apk: + cargo-mobile2: runs-on: ubuntu-latest steps: - name: Prepare cache uses: actions/cache@v4 id: cache with: - path: ~/.cargo/bin/cargo-apk - key: ${{ runner.os }}-cargo-apk - - name: Setup cargo apk + path: | + ~/.cargo/bin/cargo-android + ~/.cargo/bin/cargo-mobile + ~/.cargo/.cargo-mobile2 + key: ${{ runner.os }}-cargo-mobile2 + - name: Setup cargo mobile2 if: steps.cache.outputs.cache-hit != 'true' - run: cargo install cargo-apk + run: cargo install cargo-mobile2