依赖冲突
更新时间: 2026/01/06 15:49:38
本文提供了网易会议组件 NEMeetingKit 各功能的起始版本及其对应的底层 SDK 依赖版本信息,以及如何修改会议组件底层的能力 SDK 版本。
底层依赖
网易会议组件中依赖了网易云信的 即时通讯 NIM SDK(简称 NIM SDK) 和 音视频通话 2.0 SDK(简称 NERTC SDK) 的底层能力。您可以在网易会议组件的 更新日志 中,查看到对应组件版本适配的 NIM SDK 和 NERTC SDK 版本。
- 功能选择:根据所需功能特性,查找对应的起始版本,选择不低于该版本的 NEMeetingKit。
- 依赖管理:确保项目中的 NIM SDK、NERTC SDK 和 NERoom 版本与所选 NEMeetingKit 版本兼容。
- 版本升级:升级 NEMeetingKit 时,建议同步升级相关依赖 SDK 以获得最佳兼容性和性能。
依赖版本切换
-
如果您的项目中已经单独集成了 NIM SDK 和 NERTC SDK,并与 NEMeetingKit 中的版本冲突时,您可以手工指定 NIM SDK 和 NERTC SDK 的版本号。具体实现请参考 指定能力 SDK 版本。
-
如果您的应用中同时需要使用网易会议组件(NEMeetingKit)和 NERTC SDK 或呼叫组件时,由于它们都依赖了 NERTC SDK,可能会产生冲突。请参考 与 NERTC SDK 和呼叫组件共存 了解如何处理音视频相关组件的冲突问题,避免因多组件依赖 NERTC SDK 而产生的冲突问题,确保应用稳定运行。
指定能力 SDK 版本
如果您的项目中已经单独集成了 NIM SDK 和 NERTC SDK,并与 NEMeetingKit 中的版本冲突时,您可以手工指定 NIM SDK 和 NERTC SDK 的版本号。由于缺乏集成测试,切换的版本还可能会导致未知问题,因此建议您切换到与适配过的 NIM SDK 和 NERTC SDK 版本兼容的版本,例如 Hotfix 版本。为避免引入 SDK 的时候,自动引入高版本的 NIM SDK 和 NERTC SDK,您可以在 集成 SDK 时,通过 Maven 仓库依赖添加目标的 NIM SDK 和 NERTC SDK 版本,并添加强制配置:
Groovydependencies {
implementation 'com.netease.yunxin.kit.meeting:meeting:x.x.x'
}
您可根据需要自行选择组件版本号,建议使用最新版本,详情可查看会议组件 更新日志。
指定 IM SDK 版本
Groovy// 替换 NIM SDK 版本,具体版本号可参考前文描述里的更新日志
configurations.all {
// 指定为需要替换的 NIM SDK 版本号
def overrideNimVersion = '9.15.0'
resolutionStrategy.dependencySubstitution {
all { DependencySubstitution dependency ->
if (dependency.requested instanceof ModuleComponentSelector
&& dependency.requested.group == 'com.netease.nimlib') {
dependency.useTarget dependency.requested.group + ':' + dependency.requested.module + ':' + overrideNimVersion
}
}
}
}
指定 NERTC SDK 版本
Groovy// 替换 NERTC SDK 版本,具体版本号可参考前文描述里的更新日志
configurations.all {
// 指定为需要替换的 NERTC SDK 版本号
def overrideNertcVersion = '5.5.30'
resolutionStrategy.dependencySubstitution {
all { DependencySubstitution dependency ->
if (dependency.requested instanceof ModuleComponentSelector
&& dependency.requested.group == 'com.netease.yunxin'
&& dependency.requested.module.startsWith('nertc-')
) {
dependency.useTarget dependency.requested.group + ':' + dependency.requested.module + ':' + overrideNertcVersion
}
}
}
}
与 NERTC SDK 和呼叫组件共存
如果您的应用中同时需要使用网易会议组件(NEMeetingKit)和 NERTC SDK 或呼叫组件时,由于它们都依赖了 NERTC SDK,可能会产生冲突。本节介绍如何处理这种场景下的冲突问题,避免因多组件依赖 NERTC SDK 而产生的冲突问题,确保应用稳定运行。
下图展示了网易会议组件、呼叫组件和直接使用 NERTC SDK 三种场景的依赖关系:
graph TB
subgraph "应用层"
App[您的应用]
end
subgraph "组件层"
Meeting[网易会议组件<br>NEMeetingKit]
CallKit[呼叫组件<br>NERtcCallKit]
CustomRTC[自定义RTC功能]
end
subgraph "SDK层"
NERTC[NERTC SDK]
end
App -->|使用| Meeting
App -->|使用| CallKit
App -->|使用| CustomRTC
Meeting -->|依赖| NERTC
CallKit -->|依赖| NERTC
CustomRTC -->|直接调用| NERTC
classDef conflict fill:#ff9999,stroke:#ff0000,stroke-width:2px;
class NERTC conflict;
共存原理
多种组件共存的核心原则是 NERTC 即用即销,具体做法如下:
- 按需初始化:只在需要使用音视频功能时初始化 NERTC SDK。
- 及时销毁:功能使用完毕后立即释放相关资源。
- 避免重复初始化:确保不同组件不会同时初始化 NERTC SDK。
- 功能隔离:设计应用 UI/UX 时,确保用户不能同时使用会议和 NERTC/呼叫功能。
- 版本兼容:确保使用的网易会议组件和 NERTC/呼叫组件依赖的 NERTC SDK 版本相兼容,您可以在《呼叫组件》更新日志 中查看依赖的 NERTC SDK 版本号。
NERTC SDK 在不同场景中的生命周期管理流程:
sequenceDiagram
participant App as 应用层
participant Meeting as 网易会议组件
participant CallKit as 呼叫组件
participant CustomRTC as 自定义 RTC 功能
participant NERTC as NERTC SDK
Note over App,NERTC: 场景 1: 使用网易会议组件
App->>Meeting: 初始化网易会议组件
App->>Meeting: 创建会议/加入会议
Meeting->>NERTC: 内部初始化 NERTC
Meeting->>NERTC: 调用 NERTC 能力
App->>Meeting: 结束会议
Meeting->>NERTC: 释放 NERTC 资源
Note over App,NERTC: 场景 2: 使用呼叫组件(用时初始化模式)
App->>CallKit: 初始化呼叫组件(initRtcMode=IN_NEED_DELAY_TO_ACCEPT)
App->>CallKit: 发起呼叫
CallKit->>NERTC: 需要时初始化 NERTC
CallKit->>NERTC: 调用 NERTC 能力
App->>CallKit: 结束通话
CallKit->>NERTC: 释放 NERTC 资源
Note over App,NERTC: 场景 3: 直接使用 NERTC SDK
App->>CustomRTC: 准备使用自定义 RTC 功能
CustomRTC->>NERTC: 显式初始化 NERTC
CustomRTC->>NERTC: 调用 NERTC 能力
CustomRTC->>NERTC: 使用完毕后显式释放资源
网易会议组件与直接使用 NERTC SDK
如果您在应用中既使用网易会议组件,又直接使用 NERTC SDK 实现自定义功能,请遵循以下原则:
- 业务隔离:确保网易会议组件和自定义 NERTC 功能不会同时使用。
- NERTC 生命周期管理:
-
在使用自定义 NERTC 功能时,初始化 NERTC SDK。
-
功能使用完毕后调用销毁方法(
release)释放资源。Java// 释放 NERTC SDK 资源 NERtcEx.getInstance().release() -
切换到网易会议组件创建会议/加入会议前确保已完全销毁 NERTC 实例。
-
网易会议组件与呼叫组件共存
呼叫组件提供了配置 NERTC 初始化时机的能力,可以设置为 用时初始化(IN_NEED_DELAY_TO_ACCEPT)模式:
-
呼叫组件配置:
JavaCallKitUIOptions options = new CallKitUIOptions.Builder() .rtcAppKey("音视频通话 NERTC SDK 的 AppKey") .initRtcMode(NECallInitRtcMode.IN_NEED_DELAY_TO_ACCEPT) // 设置为用时初始化模式 ...... ...... .build(); CallKitUI.init(getApplicationContext(), options); -
避免同时使用:确保呼叫组件和网易会议组件不会同时工作,使用一个功能前先完全退出另一个功能。如在会议过程中,如果接收到呼叫邀请,单击接听之前应该先调用接口退出会议,反之亦然。
下一步
完成版本选择后,您可以继续 集成 SDK。




