M1 Mac升级Flutter依赖后iOS端CocoaPods依赖兼容问题
解决方案
1. 对齐Flutter Firebase插件与iOS Firebase SDK版本
Flutter的Firebase插件会绑定特定版本的iOS Firebase SDK,升级pub依赖后插件要求的SDK版本可能和CocoaPods源中可获取的版本不匹配,或是本地缓存干扰了版本检测:
- 打开
pubspec.yaml,核对所有Firebase相关插件(如firebase_core、firebase_in_app_messaging)的版本,确保插件间相互兼容。 - 在iOS项目的
Podfile顶部添加全局版本锁定,强制所有Firebase组件使用指定版本:
然后在$FirebaseSDKVersion = '10.20.0'target 'Runner' do代码块中,修改Firebase组件的引用方式:pod 'Firebase/InAppMessaging', $FirebaseSDKVersion
2. 彻底清理M1环境下的缓存与依赖
之前的清理操作可能未覆盖M1专属的缓存路径,执行以下命令完成深度清理:
# 删除iOS目录下的Pods文件与锁定文件 rm -rf ios/Pods ios/Podfile.lock # 删除CocoaPods全局缓存与源文件 rm -rf ~/Library/Caches/CocoaPods rm -rf ~/.cocoapods/repos # 清理Flutter项目缓存 flutter clean flutter pub get # 重新安装pod(M1设备需指定架构时使用) arch -x86_64 pod install --repo-update
注:若使用Rosetta模式打开终端,直接执行pod install --repo-update即可。
3. 校验CocoaPods源的版本同步情况
CocoaPods的trunk源可能存在版本同步延迟,导致目标版本暂未上线:
- 执行命令查看源中已有的Firebase/InAppMessaging版本:
若搜索结果中无10.20.0版本,需暂时降低Flutter插件版本,匹配CocoaPods已有的Firebase SDK版本。可在pub.dev上查询pod search Firebase/InAppMessagingfirebase_in_app_messaging的版本兼容说明,修改pubspec.yaml后重新执行flutter pub get与pod install。
4. 修正Xcode架构配置
M1设备的架构设置异常可能导致依赖拉取失败:
- 打开iOS项目的
Runner.xcworkspace,进入Runner target的Build Settings:- 将
Architectures设置为Standard Architectures (arm64, x86_64) - 将
Build Active Architecture Only的Debug模式设为Yes,Release模式设为No
- 将
- 清理Xcode缓存(快捷键Cmd+Shift+K)后重新构建项目
内容的提问来源于stack exchange,提问作者Hamza
相关产品推荐
相关产品推荐

