# Dynamic feature delivery local test fails

**URL:** <https://devforum.zoom.us/t/dynamic-feature-delivery-local-test-fails/138264>\
**Category:** Android\
**Created:** [October 26, 2025, 4:38am UTC](https://devforum.zoom.us/t/dynamic-feature-delivery-local-test-fails/138264 "2025-10-26T04:38:21Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![tech17](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tech17/32/49583_2.png) [@tech17](https://devforum.zoom.us/u/tech17)\
**Post date:** [October 26, 2025, 4:38am UTC](https://devforum.zoom.us/t/dynamic-feature-delivery-local-test-fails/138264/1 "2025-10-26T04:38:21Z")

</div>

Hi!

**Description**  
I’m trying to implement feature delivery of the zoom module in my app. However, the app fails when you try to test it locally using bundletool. This is the crash:

`FATAL EXCEPTION: main`  
`Process: us.zoom.sdkdynamic.sample, PID: 9610`  
`java.lang.UnsatisfiedLinkError: dlopen failed: library “libzoom_util.so” not found: needed by /data/data/us.zoom.sdkdynamic.sample/files/splitcompat/1/native-libraries/feature_mobilertc.config.arm64_v8a/libcmmlib.so in namespace clns-9`  
`at java.lang.Runtime.loadLibrary0(Runtime.java:1090)`  
`at java.lang.Runtime.loadLibrary0(Runtime.java:1012)`  
`at java.lang.System.loadLibrary(System.java:1765)`  
`at com.zipow.cmmlib.AppContext.(AppContext.java:6)`  
`at us.zoom.internal.impl.q2.a(ZoomSDKImpl.java:63)`  
`at us.zoom.sdk.ZoomSDK.initialize(ZoomSDK.java:1)`  
`at us.zoom.sdkdynamic.feature.mobilertc.JoinMeetingActivity.initSDK(JoinMeetingActivity.java:66)`  
`at us.zoom.sdkdynamic.feature.mobilertc.JoinMeetingActivity.onCreate(JoinMeetingActivity.java:54)`  
`at android.app.Activity.performCreate(Activity.java:9155)`  
`at android.app.Activity.performCreate(Activity.java:9133)`  
`at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1521)`  
`at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4262)`  
`at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4467)`  
`at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:222)`  
`at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:133)`  
`at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:103)`  
`at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:80)`  
`at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2823)`  
`at android.os.Handler.dispatchMessage(Handler.java:110)`  
`at android.os.Looper.loopOnce(Looper.java:248)`  
`at android.os.Looper.loop(Looper.java:338)`  
`at android.app.ActivityThread.main(ActivityThread.java:9067)`  
`at java.lang.reflect.Method.invoke(Native Method)`  
`at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)`  
`at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)`

This crash can be reproduced in the dynamic\_sample provided in the SDK using the following steps:  
Generate bundles for the dynamic\_sample project  
Use bundletool with –local-testing to build the apks as they were to be served by the play store

Use bundletool to install the built apks into the device

Once the app is installed you can try to “download” the module and it will crash after trying to load the native libs `libzoom_util.so`.

The strange thing is that if I analyze the bundle I can see that the library is there. I have tried Relink to see if it helped but it threw the same error. Also, If I install the apk locally or locally from the bundles it works fine. The app actually works when i test it on google play, but it takes a lot of time doing these tests since I have to publish them. Have you managed to make this work locally? Any help would be awesome

**Which Android Meeting SDK version?**  
I have tried 6.5.6 and 6.6.0 and both have the same error

**To Reproduce(If applicable)**  
Steps to reproduce the behavior:

1. Generate project bundles
2. Use bundletool to generate local testing apks
3. install the apks in the device using bundletool
4. Try to use the dynamic module to see the error

**Troubleshooting Routes**  
I’ve tried local builds and different zoom sdk versions on emulator and physical devices and they all fail.  
Google Play internal test actually works

**Smartphone (please complete the following information):**

- Device: Pixel 9,
- OS: Android 16 arm64
- Device: Motorola razr 50
- OS: Android 16 arm64

**Additional context**  
Used Relinker to see if it helped but it didn’t.

---

<div class="post-metadata">

**Author:** ![DaoTao1](https://avatars.discourse-cdn.com/v4/letter/d/b38774/32.png) [@DaoTao1](https://devforum.zoom.us/u/DaoTao1)\
**Post date:** [October 27, 2025, 3:40am UTC](https://devforum.zoom.us/t/dynamic-feature-delivery-local-test-fails/138264/2 "2025-10-27T03:40:35Z")

</div>

> [@tech17](#):
>
> libzoom\_util

I also had the same problem, my solution was to preload so files after successfully installing the module. But I had a problem with Resources$NotFoundException, if you can do it, please share with me. This is how I did it with preload so files.

```auto
String
 preloadOrder = new String
{

        "libssl_sb.so",

“libzContext.so”,

“libzoom_util.so”,

// “libzzhost.so”,

“libcrypto_sb.so”,

“libzlib.so”,

“libzReflection.so”,

“liblooper.so”,

“libZoomTask.so”,

“libcmmlib.so”,

“libusb-1.0.so”,

“libtensorflowlite_gpu_jni.so”,

“libtensorflowlite_jni.so”,

“libsodium.so”,

“libzoombase_crypto_shared.so”,

“libviper_neon.so”,

“libviper.so”,

“libzoom_tp.so”,

“libuvc.so”,

“libZMDB.so”,

“libcmmbiz.so”,

“libzNetUtils.so”,

“libzEventTracker.so”,

“libzPSApp.so”,

“libZoomMeetingBridge.so”,

“libpdfium_wrap.so”,

“libzmNotiEcies.so”,

“libc++_shared.so”,

“libcares.so”,

“libcptcommon.so”,

“libcptshare.so”,

“libdvf.so”,

“libnydus.so”,

“libmcm_neon.so”,

“libmcm.so”,

“libmedia_endpoint.so”,

“libprotoc.so”,

“libzUnifyWebView.so”,

“libhybrid.so”,

“libssb_sdk.so”,

“libzApp.so”,

“libzAppConfUI.so”,

“libzAppJNI.so”,

“libzAppPTUI.so”,

“libzAudioSettingJNI.so”,

“libzbt.so”,

“libzConfUniversalUI.so”,

“libzContinuityMedia.so”,

“libzData.so”,

“libzinstrumentor.so”,

“libzoombase_shared.so”,

“libzKBCrypto.so”,

“libzWebService.so”,

“libzMsgAppCommon.so”,

“libzPTApp.so”,

“libzLoader.so”,

“libzChatUI.so”,

“libzlt.so”,

“libzm2d.so”,

“libannotate.so”,

“libzmkv.so”,

“libzMsgUI.so”,

“libzNet.so”,

“libzoom_pdfium.so”,

“libZoomTelemetry.so”,

“libzPTKBCrypto.so”,

“libzSdkCore.so”,

“libzTelemetryBiz.so”,

“libzTelemetryJNI.so”,

“libzVideoApp.so”,

“libzVideoUI.so”

};

private void **preloadZoomLibs** ( **Context** context) {

try {

File splitDir = new File(context.getFilesDir(), “splitcompat”);

if (!splitDir.exists()) {

Log.w(TAG, “splitcompat dir not found”);

return;

}

for (File sessionDir : splitDir.listFiles()) {

File nativeLibsDir = new File(sessionDir, “native-libraries”);

if (!nativeLibsDir.exists()) continue;

for (File archDir : nativeLibsDir.listFiles()) {

if (archDir.isDirectory() && archDir.getName().startsWith(“zoomusmodule”)) {

Log.d(TAG, "Found Zoom libs at " + archDir.getAbsolutePath());

for (String lib : preloadOrder) {

File soFile = new File(archDir, lib);

if (soFile.exists()) {

try {

System.load(soFile.getAbsolutePath());

// System.loadLibrary(lib.replace(“lib”, “”).replace(“.so”, “”));

Log.d(TAG, "Preloaded " + lib);

} catch (Throwable t) {

Log.e(TAG, "Failed to preload " + lib, t);

}

}

}

}

}

}

} catch (Exception e) {

Log.e(TAG, “Error preloading Zoom libs”, e);

}

}

```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [October 27, 2026, 3:41am UTC](https://devforum.zoom.us/t/dynamic-feature-delivery-local-test-fails/138264/3 "2026-10-27T03:41:33Z")

</div>

Closed on October 27, 2026, 3:41am UTC

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
