Flutter iOS构建因依赖废弃与版本兼容问题报错的解决方案咨询
嘿,我来帮你搞定这个头疼的iOS构建问题!结合你遇到的情况,核心是依赖版本不匹配和最低iOS版本的冲突,下面是一步步的解决方案:
1. 升级Firebase相关依赖到兼容iOS 10+的版本
你的firebase_messaging版本(6.0.16)还在使用iOS 10已废弃的UIUserNotificationType API,这就是警告的根源。同时要确保所有Firebase包版本互相兼容,避免其他冲突:
修改pubspec.yaml中的Firebase依赖为以下兼容版本(适配你的Flutter beta 1.26版本):
firebase_admob: ^0.13.0 firebase_messaging: ^8.0.0-dev.16 firebase_core: ^0.7.0 firebase_auth: ^0.20.1 cloud_firestore: ^0.16.0+1
执行以下命令更新依赖:
flutter pub get cd ios && pod install --repo-update
2. 统一最低iOS版本为10.0
既然Firebase库要求最低iOS 10.0,直接修改ios/Podfile中的版本配置:
platform :ios, '10.0'
你列出的其他第三方包(image_picker、flutter_local_notifications、flutter_inappwebview)都支持iOS 10.0,所以不用担心兼容性问题,反而能解决之前设为9.0时GoogleMobileAds等库的报错。
3. 更新通知权限请求代码(适配iOS 10+)
确保你的Flutter代码使用firebase_messaging的新API请求通知权限,替代旧的废弃方法:
import 'package:firebase_messaging/firebase_messaging.dart'; Future<void> requestNotificationPermissions() async { NotificationSettings settings = await FirebaseMessaging.instance.requestPermission( alert: true, badge: true, sound: true, ); if (settings.authorizationStatus == AuthorizationStatus.authorized) { print('用户已授权通知权限'); } }
这个方法会自动调用iOS 10+的UNAuthorizationOptions API,彻底消除废弃警告。
4. 清理缓存并重新构建
为了确保所有依赖都正确更新,执行以下清理步骤:
flutter clean rm -rf ios/Pods ios/Podfile.lock flutter pub get cd ios && pod install
之后可以用Xcode打开ios/Runner.xcworkspace重新构建,或者执行flutter run启动模拟器。
5. 消除签名团队警告
最后处理构建末尾的签名警告:
- 打开Xcode中的Runner项目
- 切换到
Signing & Capabilities标签页 - 在
Signing区域选择你的开发团队,替换占位符的Team ID
问题根源说明
你遇到的两难处境,本质是旧依赖版本与新iOS系统API的不兼容:
- 旧版
firebase_messaging还在使用iOS 10之前的废弃API - 新的Firebase库和广告库已经不再支持iOS 9,必须升级最低版本到10.0
统一依赖版本和最低iOS版本后,就能彻底解决这些冲突。
内容的提问来源于stack exchange,提问作者Zahid Tekbaş

