跳到主要内容
版本: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.0,将 eslint 更新至 ^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",

最后,你可以移除 .prettierignore 中已在 .gitignore 中存在的条目,因为从 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")
],