Flutter引入video_player与zoom后Android端ExoPlayer类重复构建失败
Flutter Android ExoPlayer传递依赖冲突解决方案
这个问题的核心是video_player 2.2.6依赖com.google.android.exoplayer:exoplayer-common:2.14.1,而zoom 1.0.3+1依赖com.google.android.exoplayer:exoplayer-ui:2.12.3,两个不同版本的ExoPlayer组件存在同名类,导致编译冲突。
方案1:强制全局统一ExoPlayer版本(推荐)
修改项目android/app/build.gradle文件,在android代码块外层添加如下配置,强制所有ExoPlayer组件使用同一版本:
configurations.all { resolutionStrategy { force 'com.google.android.exoplayer:exoplayer-common:2.14.1' force 'com.google.android.exoplayer:exoplayer-ui:2.14.1' force 'com.google.android.exoplayer:exoplayer-core:2.14.1' // 如果用到其他ExoPlayer组件也可以在这里统一指定版本 } }
配置完成后执行flutter clean,再重新运行项目即可。如果使用2.14.1版本出现运行时兼容性问题,可以把上面的版本号统一替换为2.12.3。
方案2:排除冲突的传递依赖
如果方案1不生效,可在项目android/build.gradle中添加subprojects配置,排除其中一个依赖的冲突组件,手动引入统一版本:
subprojects { project.configurations.all { exclude group: 'com.google.android.exoplayer', module: 'exoplayer-ui' } afterEvaluate { project -> if (project.name == "zoom") { dependencies { implementation('com.google.android.exoplayer:exoplayer-ui:2.14.1') } } } }
其他说明
编译过程中出现的各类插件uses or overrides a deprecated API警告不影响正常编译运行,属于第三方插件未适配最新Android API导致,可忽略。
内容的提问来源于stack exchange,提问作者XgamersX xd
相关产品推荐
相关产品推荐

