You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中BetterPlayer因ExoPlayer API变更引发空指针报错求助

解决Flutter BetterPlayer与ExoPlayer 2.18.1的DrmSessionManagerProvider兼容问题

问题原因

你使用的ExoPlayer 2.18.1版本对MediaSource.Factory#setDrmSessionManagerProvider方法做了API变更:不再允许传入null值,而当前使用的BetterPlayer版本在调用该方法时传入了null,直接触发空指针异常。


解决方案

方案1:降级ExoPlayer到兼容版本

修改app级build.gradle中的ExoPlayer依赖,指定为2.17.x版本(该版本仍支持null兼容逻辑):

dependencies {
    // ...其他依赖
    implementation ('com.google.android.exoplayer:exoplayer:2.17.1')
}

同步gradle后重新运行项目即可。

方案2:升级BetterPlayer到最新适配版本

打开pubspec.yaml,将BetterPlayer升级到最新稳定版(新版本已适配ExoPlayer 2.18+的API):

dependencies:
  // ...其他依赖
  better_player: ^0.0.82 # 替换为实际最新版本号

执行flutter pub get后重新运行项目。

方案3:临时修改BetterPlayer源码应急

如果无法升级/降级,可直接修改BetterPlayer的Android端源码:

  1. 找到BetterPlayer的BetterPlayer.kt文件,路径为better_player/android/src/main/kotlin/com/jhomlala/better_player/BetterPlayer.kt
  2. 定位到buildMediaSource方法(对应报错的第430行)
  3. 将原来传入null的代码替换为显式创建DefaultDrmSessionManagerProvider实例:
// 原代码
.setDrmSessionManagerProvider(null)

// 修改后
.setDrmSessionManagerProvider(DefaultDrmSessionManagerProvider())

重新编译项目即可解决异常。


内容的提问来源于stack exchange,提问作者Deepak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:11:26