Xcode12下无法为旧版本iOS系统纯代码创建应用问题求助
Xcode 12纯代码构建旧版本iOS应用解决方案
问题核心原因
Xcode 12默认创建的项目开启了仅兼容iOS 13及以上系统的多场景(Scene)特性,若需适配iOS 12及更低版本,需要额外关闭Scene相关配置,同时修正代码逻辑顺序。
具体修复步骤
- 调整AppDelegate中window初始化顺序:将rootViewController赋值操作放在
makeKeyAndVisible之前,避免启动黑屏 - 清理Info.plist冗余配置,完整删除以下键值对:
Application Scene Manifest(Scene特性的核心配置项,旧系统不兼容)Main storyboard file base name- 所有包含
Storyboard Name的相关条目
- 补充AppDelegate的系统版本适配标记,完整可运行的AppDelegate代码如下:
@main class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) window?.backgroundColor = .white window?.rootViewController = UINavigationController(rootViewController: ViewController()) window?.makeKeyAndVisible() return true } // 以下为iOS 13+ Scene相关方法,添加版本限制避免旧系统报错 @available(iOS 13.0, *) func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) } @available(iOS 13.0, *) func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {} }
- 确认项目Deployment Target设置为你需要支持的最低iOS版本,不要高于目标旧系统版本。
验证说明
现有ViewController代码无需修改,完成上述操作后即可正常在旧版本iOS系统上运行。
内容的提问来源于stack exchange,提问作者Ahmet Hudayberdyyev
相关产品推荐
相关产品推荐

