Android build crashes/Error for Zoom Initialization with React Native Zoom Meeting SDK Using JWT Token and domain as a parameters

Android build crashes/Error for Zoom Initialization with React Native Zoom Meeting SDK Using JWT Token and domain as a parameters

  • General Troubleshooting: Zoom Developer Docs
    1. Followed Zoom’s guide for creating a JWT token (Meeting SDK Auth)
    2. Checked for compatibility issues with our current React Native version (“0.70”).
    3. Checked for compatibility issues with current Android minSdkVersion(24), compileSdkVersion (34), targetSdkVersion(34) and ext.kotlin_version(1.8.0) .
    4. Checked dev forum for the similar solutions.
    5. Tried calling native classes from React Native using with Bridging
    6. Tried for similar solutions in the react native community.

Meeting SDK Type and Version
1st Approach tried with React Native Package

  1. “react-native-zoom-us”: “^8.0.1”

2nd Approach tried with React Native Bridging Header calling Android native components

  • Meeting SDK(Mobilertc) V6.1.0.22534

Description
iOS: using with react-native-zoom-us": "^8.0.1
*There is no issues from iOS, everything is working fine.

  • Able to initiate the zoom connection
  • Able to join the meetings with respect zoom meeting details

Android:

  • Issues with Android build while initiating the Zoom connection the app is crashing
  • Tried with react-native-zoom-us": "^8.0.1, at the time of ZoomUs.initialize the app is crashed
  • Tried with Meeting SDK(Mobilertc) V6.1.0.22534 using with React Native bridging header for native methods calling. here also app crashed

Error?
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol “__emutls_get_address” referenced by “/data/app/~~9WFTANPgRynSB950OrPN0Q==/com.tautmore-mjARDeQyTEp7fvdTRXv16Q==/base.apk!/lib/arm64-v8a/libcmmlib.so”…
at java.lang.Runtime.loadLibrary0(Runtime.java:1082)
at java.lang.Runtime.loadLibrary0(Runtime.java:1003)
at java.lang.System.loadLibrary(System.java:1661)
at com.zipow.cmmlib.AppContext.(AppContext.java:5)
at us.zoom.internal.impl.e.a(ZoomSDKImpl.java:64)
at us.zoom.sdk.ZoomSDK.initialize(ZoomSDK.java:1)
at ch.milosz.reactnative.RNZoomUsModule$3.run(RNZoomUsModule.java:172)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:257)
at android.os.Looper.loop(Looper.java:368)
at android.app.ActivityThread.main(ActivityThread.java:8839)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:572)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)

How To Reproduce
1st Approach:

  • Updated react-native-zoom-us”: “^6.18.0 to react-native-zoom-us”: “^8.0.1

  • As per the zoom documentation we switched from Appkey and AppSecret to JWT Token

  • Current Package version React Native (“react-native-zoom-us”: “^8.0.1”) and related code

  • Installed packages using with “npm install” command

  • import ZoomUs, { ZoomEmitter, ZoomUsVideoView } from ‘react-native-zoom-us’;

  • const initializeResult = await ZoomUs.initialize({
    jwtToken: sdkJwtToken,
    domain: “zoom.us
    }).then(res => {
    console.log(‘ZoomUs.initialize res==>>>>’, res);
    console.log({ initializeResult })
    })

  • Provided all the permissions in. the AndroidManifest.xml as per the Package document

2nd Approach :

  • Updated Meeting SDK(Mobilertc) V5.13.) to Meeting SDK(Mobilertc) V6.1.0.22534)
  • Current Meeting SDK(Mobilertc) V6.1.0.22534) Calling Android Native methods with React native Bridging Headers
  • Downloaded and Imported Mobilertc package in the android folder.
  • Provided all the permissions in. the AndroidManifest.xml and changed app bundle.gradle as per the SDK dude lines.
  • Created Bridging class and able to access the Native classes/components from react native code.
  • private final ReactApplicationContext reactContext;
    public void initZoom(String jwtToken, String domain, Promise promise) {
    ZoomSDK sdk = ZoomSDK.getInstance();
    // TODO: For the purpose of this demo app, we are storing the JWT Token in the client app itself. However, you should not use hard-coded values for your JWT Token in your app in production.
    ZoomSDKInitParams params = new ZoomSDKInitParams();
    params.jwtToken = jwtToken; // TODO: Retrieve your JWT Token and enter it here
    params.domain = domain;
    params.enableLog = true;
    // TODO: Add functionality to this listener (e.g. logs for debugging)
    ZoomSDKInitializeListener listener = new ZoomSDKInitializeListener() {
    /**
    * @param errorCode {@link us.zoom.sdk.ZoomError#ZOOM_ERROR_SUCCESS} if the SDK has been initialized successfully.
    */
    @Override
    public void onZoomSDKInitializeResult(int errorCode, int internalErrorCode) {
    Log.d(“test”,“errorcoder “+errorCode+” internalErrorCode”+internalErrorCode);
    }
    @Override
    public void onZoomAuthIdentityExpired() {
    Log.d(“testerror”,“jwt expired”);
    }
    };
    sdk.initialize(reactContext, listener, params);
    }

I hope that, we will get guidance on resolving this initialization issue to ensure our application can function properly with the updated SDK.

Thanks,

@sai1 this is not an officially support platform by zoom, you will need to reach out back to the author for any issues