在Unity中集成Agora RTM聊天SDK遇无限导入循环等问题求助
Unity集成Agora RTM(聊天)SDK 避坑实操方案
版本适配预处理
- 优先选择1.5.1稳定版SDK,该版本对2020.x全系列Unity适配性最好,高于2.x的版本对旧版Unity兼容有已知缺陷
- 不要直接复用官方示例项目的
Plugins文件夹直接导入,先手动拆分导入资源:- 先导入SDK包内的
Agora.Rtm.Runtime脚本文件,放在Assets/Scripts目录下,无需和示例项目的路径绑定 - 再分平台导入Plugins下的依赖文件:
- macOS端仅保留
agora_rtm_sdk.bundle,其他平台的dll、so文件先移除 - Windows端仅保留
agora_rtm_sdk.dll,其余平台依赖移除 - Linux端仅保留
libagora_rtm_sdk.so,其余平台依赖移除
- macOS端仅保留
- 先导入SDK包内的
解决无限导入循环问题
触发该问题的核心是Unity对Plugins下的原生库文件自动重复扫描,按以下步骤操作即可修复:
- 导入SDK前先在项目中新建空的
Plugins文件夹,在Inspector面板中把Auto Reference选项取消勾选 - 逐个导入对应平台的原生库文件,单独给每个文件指定适用平台:
- .bundle文件只勾选Editor和macOS平台
- .dll文件只勾选Editor和Windows平台
- .so文件只勾选Editor和Linux平台
- 不要把示例项目的
RTM-Example相关脚本和SDK核心文件放在同一目录,单独建立Assets/Examples/AgoraRTM文件夹存放示例代码,避免编译顺序冲突
基础功能验证
初始化SDK时不要直接照搬示例的硬编码逻辑,先跑通最小验证流程,避免无预警崩溃:
using Agora.Rtm; public class RtmChatManager : MonoBehaviour { private IRtmClient _rtmClient; void Start() { // 替换为你自己的Agora AppID _rtmClient = RtmClient.CreateAgoraRtmClient("YOUR_APP_ID"); if (_rtmClient == null) { Debug.LogError("RTM SDK初始化失败,请检查依赖文件是否正确导入"); return; } // 后续登录、加入频道、收发消息逻辑可参考官方示例调整 } }
常见报错修复
- dll缺失:检查对应平台的原生库文件是否勾选了正确的适用平台,确认包体构建时对应库文件被包含在内
- 无预警崩溃:排查是否重复初始化了RtmClient实例,一个进程内仅能存在一个RtmClient实例,销毁时必须调用
Dispose()方法释放资源 - 跨平台兼容问题:不要同时导入全平台的原生依赖文件,按需导入对应开发平台的依赖,打包时再替换对应目标平台的库文件
内容的提问来源于stack exchange,提问作者BumbleBee
相关产品推荐
相关产品推荐

