Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed loading libopenxr_loader.so on Meta Quest 3 #161

Closed
ChristianSchott opened this issue Oct 23, 2024 · 1 comment
Closed

Failed loading libopenxr_loader.so on Meta Quest 3 #161

ChristianSchott opened this issue Oct 23, 2024 · 1 comment

Comments

@ChristianSchott
Copy link

ChristianSchott commented Oct 23, 2024

Hi,
sorry if this is a dumb question, I am pretty new to cross-platform building with Rust.

I have tried building and running the example/android app for Quest3 using x run --device [...] --release, which worked fine, but inside the headset I am stuck on a black loading screen, and the only way out seems to be to restart the headset. (this is likely a duplicate of !137)

Looking in the logs, I assume that this is the root cause of the problem:
Failed to initialize openxr: OpenXR loading error: dlopen failed: library "libopenxr_loader.so" not found

However, the provided build script did seem to work properly, and I assumed that xbuild would automatically package the runtime_libs into the build.

image

Does anyone know what is going wrong here?

Great work btw! I have already played around with it a bit, running on the desktop and connecting via Link.

Full Log [1/3] Fetch precompiled artifacts info: component 'rust-std' for target 'aarch64-linux-android' is up to date [1/3] Fetch precompiled artifacts [91ms] [2/3] Build rust `bevy_openxr_android`

[EDIT: removed some warnings]

Finished release profile [optimized] target(s) in 0.33s
[2/3] Build rust bevy_openxr_android [401ms]
[3/3] Create aab [2640ms]
C:\Users\Chris\Documents\Git\bevy_oxr\target\x\release\android\bev...ab: 1 file pushed, 0 skipped. 31.8 MB/s (23122057 bytes in 0.693s)
Success
Starting: Intent { act=android.intent.action.MAIN cmp=org.bevyengine.example_openxr_android/android.app.NativeActivity }
pid of org.bevyengine.example_openxr_android is 5458
--------- beginning of main

5458 5458 E _openxr_androi: Not starting debugger since process cannot load the jdwp agent.
5458 5458 D CompatibilityChangeReporter: Compat change id reported: 171979766; UID 10008; state: ENABLED
5458 5458 W System : ClassLoader referenced unknown path:
5458 5458 V GraphicsEnvironment: ANGLE Developer option for 'org.bevyengine.example_openxr_android' set to: 'default'
5458 5458 V GraphicsEnvironment: ANGLE GameManagerService for org.bevyengine.example_openxr_android: false
5458 5458 V GraphicsEnvironment: Neither updatable production driver nor prerelease driver is supported.
5458 5458 D CompatibilityChangeReporter: Compat change id reported: 175409949; UID 10008; state: DISABLED
5458 5458 D CompatibilityChangeReporter: Compat change id reported: 175409951; UID 10008; state: ENABLED
5458 5458 D CompatibilityChangeReporter: Compat change id reported: 175409956; UID 10008; state: DISABLED
5458 5458 D CompatibilityChangeReporter: Compat change id reported: 175409950; UID 10008; state: DISABLED
5458 5458 D NetworkSecurityConfig: No Network Security Config specified, using platform default
5458 5458 D CompatibilityChangeReporter: Compat change id reported: 175409952; UID 10008; state: DISABLED
5458 5458 D NetworkSecurityConfig: No Network Security Config specified, using platform default
5458 5458 I VrosSpatialAudio: init with null
5458 5458 W android_main: type=1400 audit(0.0:100): avc: denied { read } for name="cpu.cfs_quota_us" dev="cgroup" ino=46 scontext=u:r:untrusted_app:s0:c8,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0 app=org.bevyengine.example_openxr_android
5458 5488 I event C:\Users\Chris.cargo\registry\src\index.crates.io-6f17d22bba15001f\bevy_diagnostic-0.14SystemInfo { os: "Android 12 Quest 3", kernel: "5.10.198-01553-ge399b8f74d20", cpu: "not available", core_count: "6", memory: "7.6 GiB" }
5458 5488 E event crates\bevy_openxr\src\openxr\init.rs:170: Failed to initialize openxr: OpenXR loading error: dlopen failed: library "libopenxr_loader.so" not found
5458 5488 D vulkan : searching for layers in '/data/app/~~Gs237Q-5foOotbraIEu1PA==/org.bevyengine.example_openxr_android-VD9vhia20L5R5uYwWBORsA==/lib/arm64'
5458 5488 D vulkan : searching for layers in '/data/app/~~Gs237Q-5foOotbraIEu1PA==/org.bevyengine.example_openxr_android-VD9vhia20L5R5uYwWBORsA==/base.apk!/lib/arm64-v8a'
5458 5488 W Adreno-AppProfiles: Could not find QSPM HAL service. Skipping adreno profile processing.
5458 5488 I AdrenoVK-0: ===== BEGIN DUMP OF OVERRIDDEN SETTINGS =====
5458 5488 I AdrenoVK-0: ===== END DUMP OF OVERRIDDEN SETTINGS =====
5458 5458 W android_main: type=1400 audit(0.0:101): avc: denied { read } for name="cpu.cfs_period_us" dev="cgroup" ino=47 scontext=u:r:untrusted_app:s0:c8,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0 app=org.bevyengine.example_openxr_android
5458 5458 W android_main: type=1400 audit(0.0:102): avc: denied { read } for name="cpu.cfs_quota_us" dev="cgroup" ino=10 scontext=u:r:untrusted_app:s0:c8,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0 app=org.bevyengine.example_openxr_android
5458 5458 W android_main: type=1400 audit(0.0:103): avc: denied { read } for name="cpu.cfs_period_us" dev="cgroup" ino=11 scontext=u:r:untrusted_app:s0:c8,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0 app=org.bevyengine.example_openxr_android
5458 5488 I AdrenoVK-0: QUALCOMM build : 445fc2bdf5, I545b8eff08
5458 5488 I AdrenoVK-0: Build Date : 08/01/24
5458 5488 I AdrenoVK-0: Shader Compiler Version : E031.47.01.00
5458 5488 I AdrenoVK-0: Local Branch :
5458 5488 I AdrenoVK-0: Remote Branch : refs/tags/AU_LINUX_ANDROID_LA.VENDOR.12.3.11.00.00.934.442
5458 5488 I AdrenoVK-0: Remote Branch : NONE
5458 5488 I AdrenoVK-0: Reconstruct Branch : NOTHING
5458 5488 I AdrenoVK-0: Build Config : S P 12.1.6 AArch64
5458 5488 I AdrenoVK-0: Driver Path : /vendor/lib64/hw/vulkan.adreno.so
5458 5488 I AdrenoVK-0: Driver Version : 0786.0
5458 5488 I AdrenoVK-0: PFP : 0x01511175
5458 5488 I AdrenoVK-0: ME : 0x00000000
5458 5488 I AdrenoVK-0: Application Name : wgpu
5458 5488 I AdrenoVK-0: Application Version : 0x00000001
5458 5488 I AdrenoVK-0: Engine Name : wgpu-hal
5458 5488 I AdrenoVK-0: Engine Version : 0x00000002
5458 5488 I AdrenoVK-0: Api Version : 0x00403000
5458 5488 I AdrenoGLES-0: QUALCOMM build : 445fc2bdf5, I545b8eff08
5458 5488 I AdrenoGLES-0: Build Date : 08/01/24
5458 5488 I AdrenoGLES-0: OpenGL ES Shader Compiler Version: E031.47.01.00
5458 5488 I AdrenoGLES-0: Local Branch :
5458 5488 I AdrenoGLES-0: Remote Branch : refs/tags/AU_LINUX_ANDROID_LA.VENDOR.12.3.11.00.00.934.442
5458 5488 I AdrenoGLES-0: Remote Branch : NONE
5458 5488 I AdrenoGLES-0: Reconstruct Branch : NOTHING
5458 5488 I AdrenoGLES-0: Build Config : S P 12.1.6 AArch64
5458 5488 I AdrenoGLES-0: Driver Path : /vendor/lib64/egl/libGLESv2_adreno.so
5458 5488 I AdrenoGLES-0: Driver Version : 0786.0
5458 5488 I AdrenoGLES-0: Process Name : org.bevyengine.example_openxr_android
5458 5488 I AdrenoGLES-0: PFP: 0x01511175, ME: 0x00000000
5458 5488 W Adreno-AppProfiles: Could not find QSPM HAL service. Skipping adreno profile processing.
5458 5488 I AdrenoUtils: ReadGpuID:365: Reading chip ID through GSL
5458 5488 I event C:\Users\Chris.cargo\registry\src\index.crates.io-6f17d22bba15001f\bevy_render-0.14.1\sAdapterInfo { name: "Adreno (TM) 740", vendor: 20803, device: 1124403968, device_type: IntegratedGpu, driver: "Qualcomm Technologies Inc. Adreno Vulkan Driver", driver_info: "Driver Build: 445fc2bdf5, I545b8eff08, 1722513308\nDate: 08/01/24\nCompiler Version: E031.47.01.00\nDriver Branch: \n", backend: Vulkan }
bba15001f\winit-0.30.5\src\plaTODO: forward onStart notification to application

Edit:
after unpacking the .apk(/.aab) I noticed that the libopenxr_loader.so is indeed missing, so I guess the problem is with xbuild not including the runtime_libs properly?

@ChristianSchott
Copy link
Author

Seems like the latest official release of xbuild is outdated (rust-mobile/xbuild#151).
Installing xbuild from git directly resolves the issue cargo install --git https://github.com/rust-mobile/xbuild.git.
Now the libopenxr_loader.so is packaged into the .apk.

Maybe this is useful to someone..

  • x build --release -p bevy_openxr_android --platform android --arch arm64 --format apk for building an apk of the android example
  • x run --release -p bevy_openxr_android --device adb:[your device id] for directly running on a connected device (e.g. your quest). x devices or adb devices for finding you device id (assuming you have adb installed)

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

No branches or pull requests

1 participant