Flutter 3.24.0升级后iOS AppDelegate.swift@UIApplicationMain弃用问题解决
问题解答
1. 更新AppDelegate.swift移除@UIApplicationMain警告的推荐方式
Flutter 3.24之后,iOS端不再推荐直接在AppDelegate类上使用@main(原@UIApplicationMain的语法糖),正确的做法是通过单独的main.swift文件来启动应用:
- 在
ios/Runner目录下新建main.swift文件,添加以下代码:
import UIKit import Flutter // 指定AppDelegate作为应用代理类 let appDelegateClassName = NSStringFromClass(AppDelegate.self) // 手动调用UIApplicationMain启动应用 UIApplicationMain(CommandLine.argc, CommandLine.unsafeArgv, nil, appDelegateClassName)
- 打开你的
AppDelegate.swift,删除类上方的@main标记,修改后的类定义如下:
@objc class AppDelegate: FlutterAppDelegate { // 原有代码保持不变... }
这样就完全替换了@main的功能,同时消除了弃用警告。
2. 升级Flutter 3.24.0时iOS开发需注意的变更
- 最低系统版本提升:Flutter 3.24要求iOS部署目标至少为iOS 14.0,需要在Xcode中打开项目,将
Runnertarget的Deployment Info里的iOS Version调整为14.0或更高。 - 废弃API清理:移除了对iOS 13及以下版本的支持,项目中针对iOS 13的适配代码(比如旧版通知、UIKit兼容逻辑)可以清理。
- CocoaPods依赖更新:升级后需要进入
ios目录执行pod install,确保所有Flutter插件和iOS原生依赖适配最新引擎版本。 - 插件兼容性:部分旧版Flutter插件可能不兼容3.24版本,需要检查
pubspec.yaml中的插件版本,升级到支持Flutter 3.24的最新版(比如firebase_messaging、flutter_local_notifications等)。 - SwiftUI集成优化:如果项目使用SwiftUI,Flutter提供了更流畅的
FlutterViewController集成方式,可按需调整现有SwiftUI页面的Flutter嵌入逻辑。
3. 针对@UIApplicationMain弃用警告的解决方案
直接采用上述第一个问题中的修改方式即可:
- 创建
main.swift手动启动应用 - 删除
AppDelegate.swift中的@main标记
这个方案完全符合Flutter 3.24之后的iOS项目架构规范,同时彻底消除警告。
内容的提问来源于stack exchange,提问作者dokind
相关产品推荐
相关产品推荐

