Description
In Android 15 support for 16KB page sizes has been announced.
However, ELF segments of some of the native libraries bundled with Zoom Video SDK are not aligned using 16 KB ELF alignment. This results in runtime crash when loading them on emulator that is configured to use 16KB page size:
java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH/DT_GNU_HASH in "/data/app/~~t8gAD_l-wXTTeMB8iFsi-w==/com.myapp-tFVds1GNiMfbyS8HhXzfwg==/base.apk!/lib/arm64-v8a/libc++_shared.so" (new hash type from the future?)
at java.lang.Runtime.loadLibrary0(Runtime.java:1081)
at java.lang.Runtime.loadLibrary0(Runtime.java:1003)
at java.lang.System.loadLibrary(System.java:1765)
at us.zoom.util.AndroidContext.<clinit>(Unknown Source:2)
at us.zoom.internal.SDKApplication.onSDKCreated(Unknown Source:18)
at us.zoom.internal.SDKApplication.initializeForSDK(Unknown Source:34)
at us.zoom.internal.ZoomVideoSDKImpl.initialize(Unknown Source:3)
This can also be verified by preparing and running alignment.sh
script as described in the documentation. In the stacktrace there’s only libc++_shared.so
mentioned since it’s loaded first, but this method lists all the libraries that have this problem (e.g. libZoomTask.so
, but also others). Some of them are ok (like libzoomtensorflowlite_gpu_jni.so
).
The solution is to compile all the libraries with 16KB ELF alignment as described here.
Which Android Video SDK version?
1.12.0
To Reproduce
Steps to reproduce the behavior:
- Run the app that uses Zoom Video SDK on 16KB page size emulator.
Smartphone (please complete the following information):
- Device: Android emulator with 16KB page size
- OS: Android 15 (API 35)