代码中的破坏性变更
插件的 success() 和 error() 方法已被移除,请改用 resolve() 和 reject()。
一些已弃用的插件定义和方法(如 registerWebPlugin)已被移除,请查阅 Capacitor 3 插件升级指南以获取更多信息。
Capacitor 的辅助属性 platform 和 isNative 已被移除,请改用 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-config 和 swiftlint 更新至 ^2.0.0。
更新 prettier 依赖项
将 @ionic/prettier-config 更新至 ^4.0.0,prettier 更新至 ^3.4.2,prettier-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