You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android集成Zoom SDK遇JNI UnsatisfiedLinkError及空指针问题

解决pjsua2与Zoom SDK集成时的libc++_shared冲突及JNI符号缺失问题

问题根源

你遇到的__emutls_get_address符号找不到错误,本质是pickFirst仅强制选择了其中一个libc++_shared.so,但pjsua2和Zoom SDK依赖的libc版本不一致——不同NDK版本编译的libc符号表存在差异,导致后续调用Zoom SDK的JNI方法时找不到对应版本的符号。而SharedPreferences空指针是JNI异常引发的连锁反应,并非核心问题。

解决方案

核心思路是让两个库使用完全相同版本的libc++_shared.so,避免版本不兼容导致的符号缺失。具体步骤如下:

  • 确定Zoom SDK使用的NDK版本:查看Zoom SDK的build.gradle配置,或者解压其aar包,从AndroidManifest.xml或编译信息中找到对应的NDK版本(比如r21e、r25b等)。
  • 重新编译pjsua2:
    1. 下载对应版本的NDK,配置到pjsua2的编译环境中。
    2. 编译pjsua2时,指定使用c++_shared作为C++运行时(pjsip的编译脚本中可通过--use-ndk-cxx或类似参数配置,具体参考pjsip编译说明)。
    3. 编译完成后,将生成的libc++_shared.so替换项目中pjsua2模块下的对应文件。
  • 移除packagingOptions中的pickFirst配置:现在两个库依赖的libc++_shared版本一致,不会再出现重复文件冲突。

额外注意

解决JNI符号问题后,SharedPreferences空指针异常大概率会自动消失。如果仍存在,检查JoinByURLActivity中SharedPreferences的初始化逻辑,确保在Zoom SDK初始化完成后再进行相关操作,并且添加空值判断避免NPE。

内容的提问来源于stack exchange,提问作者dj_4war

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:09:16