Skip to content

Conversation

matthargett
Copy link

@matthargett matthargett commented Sep 28, 2025

Bump the NDK just below unstable r29 and SDK API level 36 that appear to be necessary for building for Android XR devices. Note that targeting API Level 35 is mandatory for publishing new apps to Google Play since August 2025, so this is a bit overdue for those reasons as well.

This also makes sure that we are using the OS-installed v8, rather than building from a separate source, so that profile-optimized system version that received security updates keeps apps performant. The performance aspect is key for 3D/XR workloads, and the security aspect is key when BabylonJS is processing user-supplied data by opening and rendering splats, behavior graphs, WGSL shaders, etc.

The C++20 incompatibility highlighted by newer clang in NDK 28 was highlighted by a similar downstream PR in BabylonNative: BabylonJS/BabylonNative#1552

matthargett and others added 15 commits September 27, 2025 17:40
This change updates the Azure Pipelines CI for Android to use NDK version 28.2.13676358 and SDK API level 35.

The previous configuration used an outdated NDK and SDK, causing the build to fail with an "NDK is not installed" error.

This commit addresses the issue by:
- Updating the `ndkVersion` variable in `azure-pipelines.yml`.
- Modernizing the Android job in `jobs/android.yml` to:
  - Use the `macos-latest` VM image.
  - Install the correct NDK and SDK versions.
  - Create an AVD with the new system image.
  - Use JDK 17 for the Gradle build.
Fix: Update Android CI to use NDK 28 and API 35
This change updates the Azure Pipelines CI for Android to use NDK version 28.2.13676358 and SDK API level 35.

The previous configuration used an outdated NDK and SDK, causing the build to fail. This commit addresses the issue by:
- Updating the `ndkVersion` variable in `azure-pipelines.yml`.
- Modernizing the Android job in `jobs/android.yml` to:
  - Use the `macos-latest` VM image.
  - Install the correct NDK and SDK versions.
  - Create an AVD with the new system image.
  - Use JDK 17 for the Gradle build.
  - Add `_JAVA_OPTIONS` to fix `NoClassDefFoundError` with `sdkmanager` on newer JDKs.
Updated required tools and minimum Android version in README. Added link to Android OS measured usages globally. Note specifically Android-base XR device coverage that Android 10 and up includes. This *does* exclude Oculus Go (which was left on Android 7 before EOL), which we can discuss further if coverage of that device is deemed critical.
…it explicitly now. Update README to be specific about minimums and why.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant