Flutter的video_player插件在iOS模拟器抛出PlatformException如何解决?
问题原因分析
- 你当前使用的是Flutter master分支的非稳定预览版本(2.6.0-12.0.pre.899),该版本的
video_player插件存在iOS 15兼容bug:底层AVPlayer初始化逻辑存在缺陷,会直接中断加载流程,因此不会发起对应的网络请求,该问题仅出现在iOS端,不会影响Android运行。 - M1芯片的Mac运行Xcode 13配套的iOS 15模拟器存在原生AVPlayer兼容问题,该问题为苹果模拟器本身的缺陷,仅在模拟器环境触发,iOS真机不受影响。
- 可能存在ATS(App Transport Security)配置遗漏:如果你的视频地址为HTTP协议,或者使用了不受系统信任的自签名HTTPS证书,请求会在iOS原生层直接被拦截,不会出现在Flutter DevTools的网络日志中。
详细日志开启方法
要获取原生层的具体报错信息,操作如下:
- 用Xcode打开项目下的
ios/Runner.xcworkspace工程 - 在
Info.plist中添加键值对:AVFoundationLoggingLevel,类型为Number,值设为3,即可开启AVPlayer的全量日志输出 - 直接通过Xcode运行项目到模拟器,所有原生层的加载错误都会输出在Xcode控制台,可定位具体失败原因
修复方案
- 优先切换到Flutter stable分支的3.0及以上稳定版本,你遇到的
video_player兼容问题在稳定版中已经完成修复 - 若需保留当前Flutter版本,可在iOS工程的
Info.plist中添加ATS配置:新增NSAppTransportSecurity字典,在字典下添加NSAllowsArbitraryLoads键,值设为YES,若只需放开特定域名,可添加NSExceptionDomains配置对应服务器域名即可 - 如果你使用的是M1芯片的Mac,可切换到iOS 14版本的模拟器测试,或者直接使用iOS真机运行,该模拟器特有bug不会影响线上版本正常运行
内容的提问来源于stack exchange,提问作者pnzrfst1
相关产品推荐
相关产品推荐

