Flutter集成Agora SDK通话黑屏 用CreateWithConfig触发RTC SDK初始化错误
Flutter集成Agora SDK通话黑屏+初始化报错排查方案
使用createWithConfig替代已废弃的RtcEngine.create完成RtcEngine初始化后,发起通话直接黑屏,控制台抛出NEED TO check rtc sdk init fatal error类RuntimeException,本质是Agora RTC引擎在初始化阶段就触发了致命错误,视频链路完全未建立,因此必然出现黑屏。可按以下顺序逐项排查解决:
1. 校验初始化配置的必填参数
- 检查
RtcEngineConfig传入的appId有效性:确认没有把占位字符串(如"your_app_id")硬编码进代码,appId需从Agora控制台获取且对应项目处于启用状态,未被平台限制 - 检查
RtcEngineConfig的上下文依赖:Android端需传入有效的应用Context,不能为空,也不能传入已经销毁的Activity实例
2. 排查Android端权限配置缺失
Agora SDK初始化阶段就会校验基础权限配置,权限缺失是最高发的初始化失败原因:
- 核对
AndroidManifest.xml中的静态权限声明:必须包含INTERNET、CAMERA、RECORD_AUDIO三类基础权限 - 适配高版本Android的动态权限要求:应用targetSdkVersion≥23时,所有危险权限(相机、麦克风)需在调用
createWithConfig前完成运行时弹窗申请,不能仅靠Manifest静态声明,也不能在引擎初始化完成后再申请权限
3. 排查SDK版本兼容问题
- 核对
pubspec.yaml中agora_rtc_engine的版本,确认当前版本支持createWithConfig初始化API:低版本SDK仅兼容已废弃的RtcEngine.create方法,强行用新API会直接触发初始化报错 - 避免版本错配:不要在Flutter端引入高版本agora_rtc_engine插件的同时,在Android原生
build.gradle中手动引入低版本的Agora RTC原生依赖,两侧SDK版本不一致会直接导致初始化崩溃
4. 排查初始化流程的时序错误
- 严格遵循正确的初始化调用顺序:完成权限申请 → 调用
createWithConfig等待引擎初始化完成 → 配置视频参数、开启本地预览 → 调用joinChannel加入频道 - 禁止在引擎初始化的过程中提前调用
joinChannel、开启本地渲染等方法,否则插件层会因引擎状态异常抛出笼统的初始化错误
5. 定位具体错误根因
- 为RtcEngine注册
EventHandler的onError回调,打印回调返回的具体错误码,替换MethodChannel抛出的笼统报错信息:- 返回
ERR_INVALID_APP_ID对应appId配置错误 - 返回
ERR_NOT_READY对应初始化时序混乱,引擎未就绪就被调用其他方法 - 返回
ERR_PERMISSION_DENIED对应权限缺失
- 返回
内容的提问来源于stack exchange,提问作者Yahya
相关产品推荐
相关产品推荐

