从 Capacitor 7 升级到 Capacitor 8
在本指南中,你将找到将项目更新到当前 Capacitor 8 版本的步骤,以及官方插件的破坏性变更列表。
Capacitor 配置文件中的破坏性变更
appendUserAgent 在 iOS 上存在一个 bug,会在添加 user agent 之前额外添加两个空格,该问题已修复。如果你希望阻止 user agent 的变化,请在 ios.appendUserAgent 中添加一个额外的空格。不要在根级别的 appendUserAgent 上操作,因为这也会在 Android 上添加空格。
android.adjustMarginsForEdgeToEdge 已被移除,推荐使用我们新的 System Bars 核心插件来处理现代 Android 的边到边问题。
简而言之,边距处理已被移除,推荐使用 env / CSS 变量来处理边到边问题。请阅读此处了解更多信息以及在 应用程序中如何实现。
@capacitor/cli 中的破坏性变更
Capacitor CLI 现在默认创建 iOS SPM 项目。
虽然这不会影响现有应用,但如果你删除 ios 文件夹并重新运行 npx cap add ios,它将使用 SPM 模板创建。如果你希望使用 CocoaPods 模板,请运行 npx cap add ios --packagemanager CocoaPods。
@capacitor/android 中的破坏性变更
bridge_layout_main.xml 文件已被移除,如果你在应用代码或插件代码中引用了它,请改用 capacitor_bridge_layout_main.xml。
@capacitor/ios 中的破坏性变更
Capacitor 现在会在 viewDidAppear 和 viewWillTransition 时发出 CAPBridgeViewController 的通知,如果你使用 CAPBridgeViewController 扩展来发出这些事件,应将其移除。
NodeJS 22+
Capacitor 8 需要 NodeJS 22 或更高版本。(推荐使用最新的 LTS 版本。)
使用 CLI 进行迁移
将最新版本的 Capacitor CLI 安装到你的项目中:
npm i -D @capacitor/cli@latest
安装完成后,只需运行以下命令,CLI 将为你处理迁移:
npx cap migrate
如果迁移的某些步骤无法完成,终端输出中会提供额外的信息。以下是手动迁移的步骤。
iOS
以下指南描述了如何将你的 Capacitor 7 iOS 项目升级到 Capacitor 8。
升级 Xcode
Capacitor 8 需要 Xcode 26.0+。
提升 iOS 部署目标
在你的 Xcode 项目中执行以下操作:在项目编辑器中选择 Project,然后打开 Build Settings 选项卡。在 Deployment 部分,将 iOS Deployment Target 更改为 iOS 15.0。对所有应用 Targets 重复相同步骤。
然后,如果项目使用的是 CocoaPods,打开 ios/App/Podfile 并将 iOS 版本更新为 15.0:
platform :ios, '15.0'
Android
以下指南描述了如何将你的 Capacitor 7 Android 项目升级到 Capacitor 8。
升级 Android Studio
Capacitor 8 需要 Android Studio Otter | 2025.2.1 或更新版本。
更新完成后,Android Studio 可以帮助处理一些与 gradle 相关的更新。首先,运行 Tools -> AGP Upgrade Assistant,然后在下拉菜单中选择 8.13.0 作为要更新的版本。接着点击 Run selected steps。

更新 Android 项目变量
在你的 variables.gradle 文件中,将值更新为以下新的最低版本:
minSdkVersion = 24
compileSdkVersion = 36
targetSdkVersion = 36
androidxActivityVersion = '1.11.0'
androidxAppCompatVersion = '1.7.1'
androidxCoordinatorLayoutVersion = '1.3.0'
androidxCoreVersion = '1.17.0'
androidxFragmentVersion = '1.8.9'
coreSplashScreenVersion = '1.2.0'
androidxWebkitVersion = '1.14.0'
junitVersion = '4.13.2'
androidxJunitVersion = '1.3.0'
androidxEspressoCoreVersion = '3.7.0'
cordovaAndroidVersion = '14.0.1'