从 Capacitor 3 升级到 Capacitor 4
与之前的升级相比,Capacitor 3 和 4 之间的破坏性变更相当少。在本指南中,您将找到将项目更新到当前 Capacitor 4 版本的步骤,以及我们官方插件的破坏性变更列表。
使用 CLI 进行迁移
使用 npm i -D @capacitor/cli@latest-4 将最新版本的 Capacitor CLI 安装到您的项目中。安装完成后,只需运行 npx cap migrate 即可让 CLI 为您处理迁移。如果迁移的任何步骤无法完成,终端输出中将提供更多信息。下面列出了手动执行迁移的步骤。
iOS
以下指南介绍如何将您的 Capacitor 3 iOS 项目升级到 Capacitor 4。
提升 iOS 部署目标
为您的 Xcode 项目执行以下操作:在项目编辑器中选择 Project,然后打开 Build Settings 选项卡。在 Deployment 部分下,将 iOS Deployment Target 更改为 iOS 13.0。对任何应用 Targets 重复相同的步骤。
然后,打开 ios/App/Podfile 并按照以下步骤操作:
- 在第一行添加:
require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers'
- 将 iOS 版本更新为 13.0:
platform :ios, '13.0'
- 在最后一行添加此代码块:
post_install do |installer|
assertDeploymentTarget(installer)
end
移除不必要的代码
从 AppDelegate.swift 中移除未使用的 touchesBegan 方法
-override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
- super.touchesBegan(touches, with: event)
-
- let statusBarRect = UIApplication.shared.statusBarFrame
- guard let touchPoint = event?.allTouches?.first?.location(in: self.window) else { return }
-
- if statusBarRect.contains(touchPoint) {
- NotificationCenter.default.post(name: .capacitorStatusBarTapped, object: nil)
- }
-}
可选:从 Info.plist 中移除 NSAppTransportSecurity 条目
NSAppTransportSecurity 仅用于实时重载, 如果您不使用实时重载或使用 Ionic CLI 进行实时重载,则不再需要此条目。
-<key>NSAppTransportSecurity</key>
-<dict>
- <key>NSAllowsArbitraryLoads</key>
- <true/>
-</dict>