SuperAPI AI 工具集

capacitor-uiscene-migration

通用与其它

查看项目

更新于 10-15 20:10

技能介绍

用途:将 Capacitor iOS 应用或插件从 AppDelegate 生命周期迁移到 Capacitor 8.5 引入、Xcode 27 要求的 UIScene 生命周期。8.5 为 iOS 专属的破坏性次版本,仅升级依赖不会破坏应用,但工程须先采用 scene 才能用 Xcode 27 构建(也是升级 Capacitor 9 的前置)。

主要能力:按三个信号(Info.plist 中的 UIApplicationSceneManifest、ios/App/App/SceneDelegate.swift、AppDelegate.swift 中的 UISceneConfiguration(name:)将项目判定为 eligible / migrated / partial;审计 ios/App 与 node_modules 中已装插件,记录 file:line;把发现分为构建阻塞(tmpWindow、TmpViewController)、需决策(自定义 URL/activity/生命周期代码、已有 SceneDelegate、storyboard 自定义类、第三方 SDK 转发)、信息性三类;按 references 模板进行合并与验证。

必要用法:先审计、报告、询问用户,绝不先改文件。模板型项目执行 npm i @capacitor/core@^8.5.0 @capacitor/ios@^8.5.0、npm i -D @capacitor/cli@^8.5.0,再 npx cap migrate;partial 或已定制项目仅合并缺失部分。之后 npx cap sync ios 并构建,用 grep -rn --include=*.swift -E '\btmpWindow\b|\bTmpViewController\b' ios/App 复查。

关键限制:UIScene 仅限 iOS;多窗口/可调整布局等超出范围。manifest 存在后,AppDelegate 的 application(:open:options:)、application(:continue:restorationHandler:)、applicationDidBecomeActive 等将静默停止调用;didFinishLaunchingWithOptions、远程通知等仍在 AppDelegate。8.5 移除 TmpViewController、CapacitorBridge.tmpWindow。cap migrate 不覆盖已有 SceneDelegate.swift,partial 状态不自动处理。

适用场景:处于 @capacitor/ios 8.0-8.4 或 8.5 但缺 manifest;出现 Xcode 27 UIScene 警告;cap migrate 提示 partial;加 manifest 后 URL scheme、universal link、appUrlOpen 或 applicationDidBecomeActive 失效;tmpWindow/TmpViewController 报错;插件作者评估 iOS 代码兼容性;准备 8→9 升级。不适用于 Capacitor 8→9 包/原生升级本身、从零配置深度链接或 Android。插件仓库仅审计与建议,不修改应用文件。