执行flutter pub get时Flutter版本不匹配 podfile.lock版本异常
为什么文件里显示Flutter版本为1.0.0
这个现象是完全正常的,不是升级失败:
ios/Flutter/Flutter.podspec中的s.version = '1.0.0'是官方硬编码的固定值,从Flutter早期版本沿用至今,不会随着Flutter SDK版本迭代更新。CocoaPods是通过本地路径引用的方式关联你本机安装的Flutter SDK对应的iOS框架产物,并不会靠这个版本号去匹配拉取对应版本的Flutter依赖。Podfile.lock中记录的Flutter 1.0.0版本,只是直接读取了上述podspec文件里写死的字段值,和你实际安装使用的Flutter 3.0.1没有冲突,不代表项目还在使用旧版本Flutter。
检查、更新现有项目Flutter版本的正确方式
不要通过Flutter.podspec或Podfile.lock里的版本号判断项目绑定的Flutter版本,正确操作流程如下:
- 版本校验:在项目根目录执行
flutter --version,命令输出的版本号就是当前项目实际生效的Flutter SDK版本,只要这里显示3.0.1就说明SDK升级成功。 - 项目适配升级的标准步骤:
- 执行
flutter doctor确认本地SDK安装完整、环境无配置错误 - 项目根目录执行
flutter clean清理历史构建缓存 - 执行
flutter pub get拉取适配当前SDK版本的Dart三方依赖 - 进入
ios目录执行pod install --repo-update,同步更新iOS端依赖,这一步会自动关联当前Flutter SDK对应的iOS框架,无需手动修改Flutter.podspec内的版本字段
- 执行
- 注意:绝对不要手动修改
Flutter.podspec里的版本号,改动后反而会引发CocoaPods依赖解析失败。如果遇到iOS构建异常,直接删除ios/Pods目录、ios/Podfile.lock文件后重新执行上述步骤即可,无需在意固定写死的1.0.0版本标记。
内容的提问来源于stack exchange,提问作者Dev Changela
相关产品推荐
相关产品推荐

