【问题标题】:Cordova 1.6.1 - Plugin not found, or is not a CDVPluginCordova 1.6.1 - 未找到插件,或者不是 CDVPlugin
【发布时间】:2012-04-27 09:23:09
【问题描述】:

对不起,我的英语不太好。 我正在使用科尔多瓦 1.6.1。 我创建了一个新的基于cordova的项目,并对其进行了扩展以添加一个插件。我使用我创建的插件构建了一个静态库,并尝试运行包含该库的项目(该库可以在xcode的构建设置中找到),没有插件文件夹中的源代码

运行应用程序时出现以下错误:

[INFO] ClientChannel(1) 正在初始化... CDVPlugin 类 MNClientChannelPlugin (pluginName: MNClientChannelPlugin) 不存在。 错误:未找到插件“MNClientChannelPlugin”,或者不是 CDVPlugin。检查 Cordova.plist 中的插件映射。

关于这些错误的一些 cmets : 1) 第一行是我写的 JavaScript 代码的日志,这表明“初始化”函数已启动。该函数调用名为 MNClientChannelPlugin 的插件的 init 函数。 2) & 3) 这些日志来自原生 iOS cordova s​​dk(从 CDVViewController.mm 的 getCommandInstance (2) 和 execute (3) 函数调用)

在 Codova.plist 中,我将 MNClientChannelPlugin 作为键和值。使用此配置,当我将 MNClientChannelPlugin 源(.mm 和 .h)放在 Plugins 文件夹中时它可以工作,但当我使用 MNClientChannelPlugin.mm 创建静态库时它不会。 (我在我的项目中包含了这个库,并将 .h 标头放在 Plugins 文件夹中)。 Cordova 似乎在库中找不到源...

Cordova 插件位于 Cordova.Framework 而不是 带有 .m 和 .h 文件的插件文件夹,因此似乎可以创建 插件,将它们打包在一个库中并在基于cordova的中使用它们 项目,但我对我不起作用... 我查看了档案和提交,但没有找到任何 解决方案。有谁知道可能是什么问题?

【问题讨论】:

  • 我有同样的问题..有人吗?

标签: ios static-libraries phonegap-plugins cordova


【解决方案1】:

好的,我已经找到了解决方案。

问题来了:

  • 您的 MNClientChannelPlugin 保存在静态库中
  • 您的主项目引用了静态库
  • 链接器足够聪明,只链接主项目实际使用的类。
  • 据链接器所知,您的项目不使用 MNClientChannelPlugin,因为它没有在任何地方引用。
  • 没有在任何地方引用它,因为只有当您的 phonegap 应用碰巧请求 MNClientChannelPlugin 实例时才会加载该类。
  • 因此,该类未链接到您的最终二进制文件中,您会收到上述错误。

解决方案是强制链接器包含 MNClientChannelPlugin 对象。

简单的方法是将 -all_load 添加到主项目的“其他链接器标志”中。这将产生链接项目中每个静态库中的每个类的连锁反应。不过它确实有效。

更好的方法是使用 -force_load 和静态库的名称。这里有一篇关于这方面的帮助文章,虽然我自己没有尝试过:

xcode-project-target-settings-syntax-for-linker-flag-force-load-on-iphone

【讨论】:

    【解决方案2】:

    如果您使用的是 Pushwoosh(我假设您是),说明明确指出您应该复制并粘贴此代码:

    <key>PushNotification</key>
    <string>PushNotification</string>
    

    插件 在“Cordova.plist.因此,如果您遇到我曾经遇到的上述错误,则表示您没有将其复制并粘贴到插件中。将键和字符串值移动到正确的位置应该可以消除错误。

    黑客愉快!!!

    【讨论】:

      猜你喜欢
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 2014-05-09
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多