You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:57:03