从 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>