diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index c3b09557f..6b19902a8 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -31,6 +31,13 @@ jobs: matrix: api-level: [29] steps: + - name: Set env vars + run: | + echo "ANDROID_NDK_TOOLCHAIN_DIR=$ANDROID_NDK_HOME/toolchains" >> $GITHUB_ENV + export ANDROID_NDK_TOOLCHAIN_DIR=$ANDROID_NDK_HOME/toolchains + echo "Toolchain dir: $ANDROID_NDK_TOOLCHAIN_DIR.\n\nContents:" + find $ANDROID_NDK_TOOLCHAIN_DIR -maxdepth 1 + - uses: actions/checkout@v4 with: fetch-depth: 0 @@ -50,8 +57,6 @@ jobs: - name: Setup Gradle & Build test cases uses: gradle/gradle-build-action@v3 - env: - ANDROID_NDK_TOOLCHAIN_DIR: ${{ env.ANDROID_NDK_HOME }}/toolchains with: build-root-directory: platforms/android cache-read-only: false diff --git a/platforms/android/library/build.gradle b/platforms/android/library/build.gradle index 4fdec2966..92020dd8e 100644 --- a/platforms/android/library/build.gradle +++ b/platforms/android/library/build.gradle @@ -20,6 +20,7 @@ cargo { targets = ["arm", "x86", "x86_64", "arm64"] targetIncludes = ["libuniffi_wysiwyg_composer.so"] targetDirectory = '../../../target' + prebuiltToolchains = true } android { @@ -69,12 +70,12 @@ android { jacocoVersion = "0.8.8" } - ndkVersion = "27.1.12297006" - packagingOptions { resources.excludes += 'META-INF/LICENSE.md' resources.excludes += 'META-INF/LICENSE-notice.md' } + + ndkVersion getNdkVersionAsWorkaround() } kotlin { @@ -143,3 +144,10 @@ tasks.withType(Test) { jacoco.excludes = ['jdk.internal.*'] } +// Workaround for https://github.com/mozilla/rust-android-gradle/issues/46 +// This looks for the NDK path like: '/some/path/to/sdk/ndk/23.0.7599858' +// and takes the last path component, which should be the version number +def getNdkVersionAsWorkaround() { + def ndkDirectory = new File(android.sdkDirectory, "ndk") + return ndkDirectory.list().sort().last().split(PATH_SEPARATOR).last() +} \ No newline at end of file