跳到主要内容
版本:v7

代码中的重大变更

插件中的 success()error() 方法已被移除,请改用 resolve()reject()

部分已弃用的插件定义和方法(如 registerWebPlugin)已被移除,更多详情请参考 Capacitor 3 插件升级指南。

Capacitor 的辅助属性 platformisNative 已被移除,请改用 getPlatform()isNativePlatform() 方法。

Android 平台

BridgeFragment 类已被移除,如果插件使用该类来展示 Fragment,需要自行实现类似功能。

iOS 平台

添加 SPM 支持

Capacitor 6 已加入实验性 SPM 支持,您可以参照 将现有插件转换为 SPM 为插件添加支持。

将插件升级至 Capacitor 7.0

使用 @capacitor/plugin-migration-v6-to-v7

在插件目录下运行 npx @capacitor/plugin-migration-v6-to-v7@latest 命令,该工具会自动完成所有文件变更。

手动更新文件

更新 npm 依赖

更新 Capacitor 依赖

将 devDependencies 中的 @capacitor/cli@capacitor/core@capacitor/android@capacitor/ios 更新至 ^7.0.0 版本。 将 peerDependencies 中的 @capacitor/core 更新至 >=7.0.0 版本。

更新 eslint 依赖

@ionic/eslint-config 更新至 ^0.4.0eslint 更新至 ^8.57.0

更新 swiftlint 依赖

@ionic/swiftlint-configswiftlint 更新至 ^2.0.0

更新 prettier 依赖

@ionic/prettier-config 更新至 ^4.0.0prettier 更新至 ^3.4.2prettier-plugin-java 更新至 ^2.6.6。 然后更新 prettier npm 脚本,添加 --plugin=prettier-plugin-java 参数:

-    "prettier": "prettier \"**/*.{css,html,ts,js,java}\"",
+ "prettier": "prettier \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java",

最后,由于 Prettier 3.0.0 开始默认会忽略 .gitignore 中的文件,可以移除 .prettierignore 中与 .gitignore 重复的条目。如果两者内容完全一致,可直接删除 .prettierignore 文件。

更新 rollup

rollup 更新至 ^4.30.1,然后将 rollup.config.js 文件重命名为 rollup.config.mjs。 最后更新构建脚本使用新文件扩展名:

-    "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.js",
+ "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs",

更新其他依赖

rimraf 更新至 ^6.0.1@capacitor/docgen 更新至 ^0.3.0

更新 Android 插件变量

build.gradle 文件中更新以下包的最低版本:

ext {
junitVersion = project.hasProperty('junitVersion') ? rootProject.ext.junitVersion : '4.13.2'
- androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.6.1'
+ androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.7.0'
- androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.1.5'
+ androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.2.1'
- androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.5.1'
+ androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.6.1'
}

更新 targetSDK/compileSDK 至 35,minSDK 至 23

# build.gradle

android {
- compileSdk project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 34
+ compileSdk project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 35
defaultConfig {
- minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22
+ minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 23
- targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 34
+ targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 35
...
}
}

更新 gradle 插件至 8.7.2

    dependencies {
- classpath 'com.android.tools.build:gradle:8.2.1'
+ classpath 'com.android.tools.build:gradle:8.7.2'
}

更新 gradle wrapper 至 8.11.1

# gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
- distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-all.zip
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

升级至 Java 21

# build.gradle
compileOptions {
- sourceCompatibility JavaVersion.VERSION_17
+ sourceCompatibility JavaVersion.VERSION_21
- targetCompatibility JavaVersion.VERSION_17
+ targetCompatibility JavaVersion.VERSION_21
}

更新 kotlin_version

如果插件使用 kotlin,请更新默认的 kotlin_version

# build.gradle
buildscript {
- ext.kotlin_version = project.hasProperty("kotlin_version") ? rootProject.ext.kotlin_version : '1.9.10'
+ ext.kotlin_version = project.hasProperty("kotlin_version") ? rootProject.ext.kotlin_version : '1.9.25'
repositories {

iOS 最低部署目标提升至 14

更新插件的 .podspec 文件

-  s.ios.deployment_target = '13.0'
+ s.ios.deployment_target = '14.0'

兼容 SPM 的插件

更新 Package.swift 文件

-    platforms: [.iOS(.v13)],
+ platforms: [.iOS(.v14)],

旧结构插件

在 Xcode 项目中执行以下操作:在项目编辑器中选择 Project,打开 Build Settings 标签页。在 Deployment 部分,将 iOS Deployment Target 改为 iOS 14.0。对所有应用 Targets 重复相同步骤。

然后,打开 ios/Podfile 并将 iOS 版本更新为 14.0:

-platform :ios, '13.0'
+platform :ios, '14.0'

更新 Capacitor SPM 依赖

在兼容 SPM 的插件中,更新 Package.swift 文件使用固定版本而非 main 分支。

    dependencies: [
- .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "main")
+ .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", from: "7.0.0")
],