代码中的重大变更
插件中的 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",
最后,由于 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'
}