Flutter iOS模拟器运行报错:CocoaPods无法找到兼容版本的Firebase/Messaging Pod
我尝试在iOS模拟器上运行Flutter项目时,执行flutter run命令遇到了如下错误:
[!] CocoaPods could not find compatible versions for pod "Firebase/Messaging": In Podfile: firebase_messaging (from .symlinks/plugins/firebase_messaging/ios ) 已解析为9.1.3,该版本依赖Firebase/Messaging (= 7.11.0) 但您的所有spec源中没有满足依赖Firebase/Messaging (= 7.11.0)的spec。
我已经尝试过以下方法,但都没能解决问题:
- 执行
flutter clean+flutter pub get(注:原操作中误写为pug,实际是pub) - 删除iOS文件夹后执行
flutter create . - 在iOS文件夹中删除Pods文件夹及Podfile.lock,然后执行
pod init+pod install
我的项目依赖包如下:
cupertino_icons: ^1.0.2 cross_connectivity: ^3.0.2 crypto: ^3.0.1 device_info_plus: ^1.0.1 encrypt: ^5.0.0 firebase_analytics: ^8.0.2 firebase_core: ^1.1.0 firebase_crashlytics: ^2.0.2 firebase_messaging: ^9.1.3 flutter_barcode_scanner: ^2.0.0 flutter_card_swipper: ^0.4.0 flutter_easyloading: ^3.0.0 flutter_local_notifications: ^5.0.0+1 flutter_speed_dial: ^3.0.5 fluttertoast: ^8.0.3 http: ^0.13.2 image: ^3.0.2 image_picker: ^0.7.4 intl: ^0.17.0 location: ^4.1.1 mime_type: ^1.0.0 path_provider: ^2.0.1 permission_handler: ^6.1.3 shared_preferences: ^2.0.4 sqflite: ^2.0.0+3 url_launcher: ^6.0.3 webview_flutter: ^2.0.4
配置信息:
- iOS Deployment Target:12.1
- Flutter版本:2.0.4
flutter doctor -v结果:全部正常(显示为绿色)
我希望先在这里找到解决方案,之后再考虑在GitHub创建新issue。如果其他人也遇到相同问题,我会提交issue到GitHub。
解决方案
1. 先更新CocoaPods的本地仓库
大概率是你的CocoaPods本地缓存的spec源太旧了,没有包含Firebase/Messaging 7.11.0这个版本。先执行下面的命令同步最新的远程仓库:
pod repo update
这个过程可能需要几分钟,等它跑完之后,再试试flutter run或者进入iOS目录执行pod install。
2. 统一升级Firebase相关的Flutter插件版本
你的firebase_messaging用的是9.1.3,对应的iOS SDK是7.11.0,这个版本可能比较老了,仓库里找不到也正常。不如直接把所有Firebase相关的插件都升级到兼容的新版本,修改pubspec.yaml里的这些依赖:
firebase_analytics: ^9.1.1 firebase_core: ^1.10.0 firebase_crashlytics: ^2.4.0 firebase_messaging: ^11.2.0
改完之后执行flutter pub get,然后进入iOS文件夹跑pod install --repo-update,这样应该能拉到最新的兼容版本。
3. 手动指定Firebase iOS SDK版本(不想升级插件的话)
如果暂时不想升级Flutter的Firebase插件,那可以在iOS目录的Podfile里手动指定要拉取的Firebase SDK版本。打开Podfile,在最顶部加上这一行:
$FirebaseSDKVersion = '7.11.0'
然后执行pod install --repo-update,让CocoaPods专门去拉这个版本的SDK。
4. 清理深层缓存试试
要是上面的方法都不管用,可能是缓存搞的鬼,把CocoaPods的所有缓存清掉:
pod cache clean --all
然后再依次执行flutter clean、flutter pub get,最后进入iOS目录跑pod install。
5. 检查Xcode和CocoaPods版本
别忘了确认你的Xcode版本够不够,Firebase 7.11.0需要Xcode 12.5及以上版本。另外CocoaPods版本也不能太低,至少要1.10.0,用pod --version看看,版本低的话就升级:
sudo gem install cocoapods
内容的提问来源于stack exchange,提问作者Pol

