Flutter项目合并分支时firebase_auth与url_launcher版本冲突如何解决
Flutter firebase_auth与url_launcher依赖冲突解决办法
冲突根本原因
当前项目使用的firebase_auth: 0.20.1依赖plugin_platform_interface ^1.0.2,而url_launcher: 6.0.9依赖plugin_platform_interface ^2.0.0,两个依赖要求的公共接口包版本不兼容,导致版本求解失败。
另外注意:firebase_core和firebase_auth属于运行时必需依赖,你当前的配置把它们放在了dev_dependencies里是错误的,需要移动到上层的dependencies块中,否则打包时会丢失依赖。
可用解决方案
- 方案1(最推荐):升级firebase相关依赖到适配版本
现有firebase系列依赖版本过旧,将其升级到适配plugin_platform_interface 2.x的版本即可解决冲突,同时还能获得官方的安全更新和BUG修复。修改pubspec.yaml配置如下:
dependencies: flutter: sdk: flutter url_launcher: ^6.0.9 google_fonts: ^2.1.0 # 修改firebase依赖版本 firebase_core: ^1.20.0 firebase_auth: ^3.11.2 dev_dependencies: flutter_test: sdk: flutter
修改完成后删除项目根目录的pubspec.lock文件,再执行flutter pub get即可。
- 方案2:降级url_launcher适配现有firebase版本
如果暂时不想调整firebase业务代码,可降级url_launcher到依赖1.x版本plugin_platform_interface的版本:
dependencies: # 把url_launcher版本改为5.7.10 url_launcher: 5.7.10
修改完成后删除pubspec.lock重新执行flutter pub get即可。
- 方案3(应急临时方案):强制覆盖依赖版本
如果需要保留现有两个依赖的版本,可在pubspec.yaml中添加dependency_overrides节点强制指定公共依赖的版本,只要两个库没有用到跨版本不兼容的API即可正常运行:
# 加在pubspec.yaml的最外层即可 dependency_overrides: plugin_platform_interface: ^2.0.0
内容的提问来源于stack exchange,提问作者M0ngi
相关产品推荐
相关产品推荐

