IMKit 4.X 适配 5.X IMLib 方案
本文介绍如何在项目中保持 IMKit 4.X 版本的同时,升级并使用 5.X 版本的 IMLib(即时通讯能力库),从而实现 UI 组件与核心功能的版本兼容。
方案概述
通过 im_compat
兼容包,您可以在使用 IMKit 4.X UI 组件的同时,享受 5.X IMLib 的最新功能和性能优化。这种方案特别适合希望保持现有 UI 稳定性,但需要使用最新核心功能的项目。
依赖关系
im_kit:4.2.0
依赖了 im_compat:4.2.0
兼容包,该兼容包会自动引入 5.X 版本的 IMLib 核心能力库。
默认的依赖树结构如下:
─ im_kit:4.2.0
└─ im_compat:4.2.0
├─ im_libcore:5.7.5
├─ im_chatroom:5.7.5
├─ im_location:5.7.5
├─ im_discussion:5.7.5
├─ im_customservice:5.7.5
└─ im_publicservice:5.7.5
兼容包默认依赖稳定版 5.7.5,您也可以根据项目需求自定义版本。
用户接入指南
1. 添加仓库和版本依赖
在模块的 build.gradle
文件中,添加 Maven Central 仓库和 im_kit
依赖。
repositories {
maven { url "https://maven.rongcloud.cn/repository/maven-releases/" }
}
dependencies {
implementation 'cn.rongcloud.sdk:im_kit:4.2.0'
implementation 'cn.rongcloud.sdk:im_compat:4.2.0'
}
2. 初始化配置
初始化方式与 IMKit 4.X 版本保持一致,无需额外配置:
RongIM.init(this);
RongIM.connect(token, new RongIMClient.ConnectCallback() {
@Override
public void onSuccess(String userId) {
// 连接成功
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
// 连接失败
}
@Override
public void onTokenIncorrect() {
// Token 错误
}
});
3. 适配接口变更
升级后,您需要适配部分 API 的变更,最主要是消息接收监听器的 onReceived
方法。
RongIM.setOnReceiveMessageListener(new RongIMClient.OnReceiveMessageListener() {
// 此方法已废弃,不再回调
@Override
public boolean onReceived(Message message, int left) {
return false;
}
// 请替换为新的 onReceived 方法
@Override
public boolean onReceived(Message message, int left, boolean hasPackage, boolean offline) {
return false;
}
});
升级到 5.X IMLib 后,必须使用新的 onReceived
方法签名,旧方法将失效。
自定义 IMLib 模块版本
如果默认的 IMLib 版本(稳定版 5.7.5)不满足您的需求,可以通过以下方式自定义所有 5.X 模块的版本:
implementation 'cn.rongcloud.sdk:im_kit:4.2.0'
// 1. 排除 im_compat 默认依赖的所有 arouter-api 模块
implementation('cn.rongcloud.sdk:im_compat:4.2.0') {
exclude group: 'cn.rongcloud.sdk'
}
// 2. 按需引入自定义版本的 IMLib 模块
def customVersion = "5.12.3" // 您期望的版本
implementation "cn.rongcloud.sdk:im_libcore:$customVersion"
implementation "cn.rongcloud.sdk:im_chatroom:$customVersion"
implementation "cn.rongcloud.sdk:im_location:$customVersion"
implementation "cn.rongcloud.sdk:im_discussion:$customVersion"
implementation "cn.rongcloud.sdk:im_customservice:$customVersion"
implementation "cn.rongcloud.sdk:im_publicservice:$customVersion"
推送插件配置
我们建议您保持原有工程的推送配置。如果您的工程尚未集成推送功能,可以考虑使用推送 2.0集成方案。
推送(旧版)集成方案
如果您仍需使用旧版推送,请参考 推送(旧版)集成指南 进行配置。
dependencies {
implementation 'cn.rongcloud.sdk:im_kit:4.2.0'
implementation 'cn.rongcloud.sdk:im_compat:4.2.0'
// 使用 4.2.0 推送插件系列(支持库专用)
def pushVersion = "4.2.0"
implementation "cn.rongcloud.sdk.push:rong:$pushVersion"
implementation "cn.rongcloud.sdk.push:huawei:$pushVersion"
implementation "cn.rongcloud.sdk.push:xiaomi:$pushVersion"
implementation "cn.rongcloud.sdk.push:oppo:$pushVersion"
implementation "cn.rongcloud.sdk.push:vivo:$pushVersion"
implementation "cn.rongcloud.sdk.push:meizu:$pushVersion"
implementation "cn.rongcloud.sdk.push:honor:$pushVersion"
}
推送 2.0 集成方案
如果您计划使用推送 2.0,请参考 开始集成推送 2.0 文档进行配置。
AndroidX 工程接入方案
dependencies {
implementation 'cn.rongcloud.sdk:im_kit:4.2.0'
implementation 'cn.rongcloud.sdk:im_compat:4.2.0'
// 使用 5.X 推送插件系列
def pushVersion = "5.7.5"
implementation "cn.rongcloud.sdk.push:rong:$pushVersion"
implementation "cn.rongcloud.sdk.push:huawei:$pushVersion"
implementation "cn.rongcloud.sdk.push:xiaomi:$pushVersion"
implementation "cn.rongcloud.sdk.push:oppo:$pushVersion"
implementation "cn.rongcloud.sdk.push:vivo:$pushVersion"
implementation "cn.rongcloud.sdk.push:meizu:$pushVersion"
implementation "cn.rongcloud.sdk.push:honor:$pushVersion"
}
Support 库工程接入方案
dependencies {
implementation 'cn.rongcloud.sdk:im_kit:4.2.0'
implementation 'cn.rongcloud.sdk:im_compat:4.2.0'
// 使用 4.2.0 推送插件系列(支持库专用)
def pushVersion = "4.2.0"
implementation "cn.rongcloud.sdk.push:rong:$pushVersion"
implementation "cn.rongcloud.sdk.push:huawei:$pushVersion"
implementation "cn.rongcloud.sdk.push:xiaomi:$pushVersion"
implementation "cn.rongcloud.sdk.push:oppo:$pushVersion"
implementation "cn.rongcloud.sdk.push:vivo:$pushVersion"
implementation "cn.rongcloud.sdk.push:meizu:$pushVersion"
implementation "cn.rongcloud.sdk.push:honor:$pushVersion"
}
- AndroidX 工程:可使用任意 5.X 版本的推送插件。
- Support 库工程:仅支持 4.2.0 版本的推送插件。
Support
库工程不支持谷歌推送插件cn.rongcloud.sdk.push:fcm
。 - 最低版本要求:工程的
minSdkVersion
必须设置为 21 或更高版本。
回退方案
如果在适配过程中遇到难以解决的兼容性问题,可以方便地回退到纯 4.X 方案:
dependencies {
implementation 'cn.rongcloud.sdk:im_kit:4.2.0'
implementation 'cn.rongcloud.sdk:im_lib:4.2.0' // 替换为 4.X 核心库
}
兼容性说明
- UI 界面:完全保持 IMKit 4.X 的 UI 风格和交互方式。
- API 接口:绝大部分 4.X API 保持不变,仅有少量接口需要适配。
- 功能特性:可直接使用 5.X IMLib 的新功能(如超级群)和性能优化。
- 稳定性:方案经过充分测试,可确保兼容性和稳定性。
版本选择建议
- 新项目:我们建议直接使用 最新的 IMKit 5.X 版本,以获得最全面的功能和最佳性能。
- 现有项目:如果项目已上线且希望保持 UI 稳定性,可采用本方案平滑升级核心库。
- 功能驱动:如果需要使用 5.X 的核心功能但不想大规模重构 UI,本方案是理想选择。
常见问题
问:升级后需要修改大量代码吗?
答:不需要。绝大部分代码可保持原样,仅需适配极少量接口变更,例如消息接收监听器。
问:性能表现如何?
答:核心库已升级至 5.X 版本,因此性能表现与 IMKit 5.X 基本一致,相较于 4.X 版本有显著提升。
问:是否支持所有 5.X 的新功能?
答:支持 5.X IMLib 的所有核心功能,但 UI 层面仍保持 4.x 的已有特性。
问:如何处理兼容性问题?
答:如遇到问题,您可以优先尝试自定义 IMLib 模块版本,或直接回退到 4.X 方案来解决。