代码中的破坏性变更
iOS
CAPBridgedPlugin 协议的变更
CAPBridgedPlugin协议的要求已从类级别移至实例级别。pluginId被重命名为identifier,以避免与CAPPlugin.pluginId冲突。同时,getMethod(_:)要求被完全移除,并作为内部扩展方法实现。pluginMethods的定义也进行了更新,使其内容类型更加明确(从Any改为CAPPluginMethod)。
绝大多数用户应该不会遇到任何问题,因为通常使用宏来生成对 CAPBridgedPlugin 协议的遵循。任何将对象强制转换为 CAPBridgedPlugin,或未使用宏而手动遵循 CAPBridgedPlugin 协议的用户会受到影响。
Android
PluginCall.getObject() / PluginCall.getArray()
为了与 iOS 行为保持一致,Android 上的 PluginCall.getObject() 和 PluginCall.getArray() 现在可能返回 null。我们建议插件作者在处理这些方法的返回结果时进行空值检查。
在插件中更新 Capacitor 到 5.0
使用 @capacitor/plugin-migration-v4-to-v5
在插件文件夹中运行 npx @capacitor/plugin-migration-v4-to-v5@latest,它将自动执行所有文件更改。
手动更新文件
更新 package.json
将 @capacitor/cli、@capacitor/core、@capacitor/android 和 @capacitor/ios 更新到 latest-5 版本。