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

Android调用CreatePeerConnectionFactory创建WebRtcAudioManager崩溃

根因

崩溃本质是WebRTC Java层全局Application Context未提前初始化。
WebRTC M103(branch-heads/5060)Android平台的默认音频设备模块(ADM)是Java/C混合实现:C层调用webrtc::CreatePeerConnectionFactory时会主动拉起Java层WebRtcAudioManager实例,该类构造时直接读取ContextUtils类静态存储的全局ApplicationContext,调用getSystemService拿系统音频服务。这个全局Context不会被Native层自动注入,必须由业务层在调用任何Native WebRTC接口前手动初始化,未初始化时ContextUtils.getApplicationContext()返回null,直接触发空指针,Native层检测到Java异常后主动abort崩溃。
你之前完成的静态库链接、so加载、jar引入只是完成了依赖装载,没有覆盖WebRTC要求的Java层前置初始化流程——纯C++实现的Windows版本不存在Java层依赖,这是Android平台特有的必做步骤,也是跨平台适配最容易遗漏的点。

解决方案

按以下步骤修复即可:

  • 初始化时机:必须在App进程启动后、任何调用webrtc::CreatePeerConnectionFactory的逻辑执行前完成初始化,不要等到C++层创建PeerConnectionFactory的流程触发后再补。
  • Java层初始化(常规App开发模式推荐):在自定义Application的onCreate中执行以下逻辑,注意传入Application级Context,不要传入Activity Context避免内存泄漏:
import org.webrtc.ContextUtils;
import org.webrtc.PeerConnectionFactory;

// 先加载依赖库,不要等Native层被动加载
static {
    System.loadLibrary("jingle_peerconnection_so");
    // 你自己的业务Native库放在jingle_peerconnection_so之后加载
}

@Override
public void onCreate() {
    super.onCreate();
    // 初始化全局Context,这步是解决空指针的核心
    ContextUtils.initialize(getApplicationContext());
    // 可选:初始化PeerConnectionFactory全局配置,内置tracer、日志等级等
    PeerConnectionFactory.initialize(
        PeerConnectionFactory.InitializationOptions.builder(getApplicationContext())
            .setEnableInternalTracer(true)
            .createInitializationOptions()
    );
}
  • 纯Native Activity适配(无Java/Kotlin业务代码场景):在Native层入口拿到ANativeActivity实例和JNIEnv后,主动通过JNI调用Java层org.webrtc.ContextUtils的initialize方法,将Activity自带的Context作为参数传入,再执行后续WebRTC Native逻辑。
避坑说明
  • 不要尝试通过关闭音频模块绕过该问题:除非你在创建PeerConnectionFactory时手动传入完全自实现的、不依赖Java层的AudioDeviceModule,默认工厂创建的ADM一定会走Java层音频管理器初始化逻辑,只要未初始化Context就会触发崩溃。
  • 从日志看你已经能正常加载WebRTC的Java类、进入WebRtcAudioManager构造函数,说明不存在依赖缺失、混淆裁剪、so架构不匹配的问题,不需要在依赖配置上额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:54:28