Cordova iOS 插件在构建后失败,除非我先删除平台和插件 JSON

Posted

技术标签:

【中文标题】Cordova iOS 插件在构建后失败,除非我先删除平台和插件 JSON【英文标题】:Cordova iOS Plugins fail after building, unless I remove platform and plugin JSON first 【发布时间】:2013-12-02 10:53:51 【问题描述】:

我有一个 Cordova 3.2.0 项目,我正在使用 XCode 模拟器和通过 USB 的 iPhone 4S 进行测试。

当我执行以下操作时,应用程序运行没有错误:

rm -rf platforms/ios
rm plugins/ios.json
cordova platforms add ios
cordova build ios

如果我随后对我的代码进行任何类型的更改,然后重新运行:

cordova build ios

在 XCode 中启动应用程序时出现以下错误:

错误:未找到插件“StatusBar”,或者不是 CDVP 插件。检查 config.xml 中的插件映射。 2013-12-02 10:50:26.136 treemedia[774:60b] -[CDVCommandQueue executePending] [第 127 行] 失败 pluginJSON = [ “无效的”, “状态栏”, “_ready”,[]]

错误:未找到插件“设备”,或者不是 CDVP 插件。检查 config.xml 中的插件映射。 2013-12-02 10:50:26.140 treemedia[774:60b] -[CDVCommandQueue executePending] [第 127 行] 失败的 pluginJSON = [ "设备 1738472658", “设备”, "获取设备信息", [ ] ]

错误:未找到插件“NetworkStatus”,或者不是 CDVP 插件。检查 config.xml 中的插件映射。 2013-12-02 10:50:26.143 treemedia[774:60b] -[CDVCommandQueue executePending] [第 127 行] 失败 pluginJSON = [ "网络状态1738472659", "网络状态", "获取连接信息", [ ] ]

为了让应用程序正常运行,我必须删除平台和插件 json 文件,然后重新添加 ios 平台并重建。如果我跳过这些步骤并重新构建,则每次都会出现这些错误。

这只是在将 Phonegap/Cordova 从稍早的版本更新到 3.2.0 后才开始发生的。

【问题讨论】:

【参考方案1】:

在 XCode 中,转到 Build Phases -> 打开 Compiled Sources 下拉菜单。 单击 + 并添加缺少的插件 .m 文件,该文件应该在您的 Plugins 目录(但在编译的源代码中缺少)。

这个解决方案来自另一个堆栈溢出答案,这里:https://***.com/a/21148428/80254

【讨论】:

【参考方案2】:

我似乎已经通过修改项目的“www”子目录中存在的 config.xml 文件解决了这个问题。

通过从头开始的干净构建,Cordova 似乎在“platforms/ios”下生成了 config.xml 文件,带有插件功能标签(也许从插件文件本身的存在推断它们的用途),但在重建时,那些会丢失。

通过在 www/config.xml 路径中明确定义它们,重建工作正常。

【讨论】:

您希望我在 WWW 的根文件夹中添加插件配置。我说的对吗?【参考方案3】:

对我有用的非常简单的解决方案:将 Cordova CLI 版本降级为在构建期间不会删除 ios.json 的最早版本。

我的案例:CLI 版本是 5.4.1,升级到 6.3.1 - 失败。降级到 6.2.0 - 好的

一个缺点是您需要手动测试 CLI 版本。

【讨论】:

以上是关于Cordova iOS 插件在构建后失败,除非我先删除平台和插件 JSON的主要内容,如果未能解决你的问题,请参考以下文章

安装cordova push插件后,Ionic build ios失败

安装 facebook-connect 插件后 Ionic 构建失败

Cordova google-analytics-plugin 导致 phonegap iOS 构建失败

MFP Cordova-Ionic 项目的 IOS 构建失败

插件返回后 Cordova 视图无响应

构建命令失败:CompileAssetCatalog - 适用于 iOS 的 Cordova