Repository navigation
Tags
Tags
sensor/android: use ASensorManager_getInstanceForPackage on API 26+ ASensorManager_getInstance() has been deprecated since Android 26 and warns -Wdeprecated-declarations on every NDK build. Pass the package name from SDL_GetAndroidPackageName(); a NULL package name is equivalent to the old call (AOSP implements getInstance() as getInstanceForPackage(NULL)). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
android: fix inverted vulkan_validation_skip branch The fetchVulkanValidationLayer task and the stale-.so cleanup were in swapped branches of the vulkan_validation_skip property check: default builds only declared unused locals and never staged libVkLayer_khronos_validation.so, so no APK actually bundled the Vulkan validation layer. Verified on Quest via the erhe-side mirror of this fix: the layer is now packaged, loads, and reports validation errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
android-project: declare Quest controller render model feature/permis… …sion Port the XR_FB_render_model manifest block from the erhe repo's mirror, where it was added directly (erhe commit d5ebef1e) instead of here in the source-of-truth android-project/. Without both the uses-feature and the uses-permission the Quest runtime hides the extension from enumeration. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
android-project: upgrade to AGP 8.13.2 and Gradle 8.14.5 for JDK 25
Android Studio now bundles JDK 25 as its JetBrains Runtime, and AGP
8.7.3's lint cannot handle it: every release build died in
lintVitalAnalyze with a bare "> 25.0.2" from AndroidLintWorkAction,
then took the LintClassLoaderBuildService shutdown down with it. The
existing lint { abortOnError = false } does not help because lint is
crashing internally rather than reporting errors. Debug builds were
unaffected - they do not run lint-vital.
AGP 8.13.2 is the newest release that still supports the legacy variant
API. app/build.gradle uses applicationVariants.all in three places to
wire the erhe asset staging, Vulkan validation layer, and HWASan runtime
tasks into merge*Assets / merge*JniLibFolders; AGP 9.x removes that API
and requires Gradle 9.5, so that jump needs an androidComponents rewrite
and is left for later. AGP 8.13 requires Gradle 8.13+, hence 8.14.5, the
latest 8.x.
Verified in erhe with the JDK 25 JBR: assembleMobileDebug,
assembleMobileRelease, assembleQuestDebug and assembleQuestRelease all
succeed, with lintVitalAnalyze/Report running and passing on both
release variants.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
android-project: declare Quest passthrough feature and boundary visib… …ility permission The Quest OpenXR runtime hides XR_FB_passthrough from extension enumeration without the com.oculus.feature.PASSTHROUGH uses-feature, and XR_META_boundary_visibility without the com.oculus.permission.BOUNDARY_VISIBILITY uses-permission (it logs the missing strings under the OpenXR_Properties tag). Declare both in the quest flavor manifest so the erhe editor can show camera passthrough on its init status screen and suppress the boundary while passthrough is visible (erhe issue libsdl-org#214). The feature is not required: the editor falls back to a plain VR init screen without it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
android-project: add quest flavor manifest and hwasan wrap script The quest flavor manifest replaces the activity element so the MAIN+LAUNCHER+com.oculus.intent.category.VR categories share one intent-filter (required for Horizon to treat the app as immersive VR), declares headtracking, OpenXR loader broker permissions/queries, and the supported Meta device list. wrap.sh enables HWASan runs; the nested .gitattributes pins it to LF so the on-device shebang survives Windows checkouts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
android-project: add quest flavor manifest and hwasan wrap script The quest flavor manifest replaces the activity element so the MAIN+LAUNCHER+com.oculus.intent.category.VR categories share one intent-filter (required for Horizon to treat the app as immersive VR), declares headtracking, OpenXR loader broker permissions/queries, and the supported Meta device list. wrap.sh enables HWASan runs; the nested .gitattributes pins it to LF so the on-device shebang survives Windows checkouts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>