【问题标题】:Plugin not found while migrating cordova project迁移科尔多瓦项目时找不到插件
【发布时间】:2015-08-10 13:42:45
【问题描述】:

我正在将应用程序从 Cordova 2.2.0 迁移到 3.5。我正在使用负责扫描条形码的 iOS 自定义插件。我已将代码放在 Cordova Library 项目下的文件夹中。

我正在使用以下代码调用插件:

var RedLaserPlugin = {
scanBarcode: function(successFunction, failFunction) {
  return Cordova.exec(successFunction, failFunction, "RedLaserPlugin",
                      "scanBarcode", []);
}

}

并且...在加载应用程序时,

document.addEventListener("deviceready", function () { Cordova.exec(rlp_success, rlp_failure, "RedLaserPlugin", "init", []); }, false);

在 config.xml 文件中我添加了插件的依赖项...

<feature name="RedLaserPlugin">
    <param name="ios-package" value="RedLaserPlugin" />

但是当我运行应用程序时,它无法将插件绑定到 xcode 项目并提供以下内容:

-[CDVCommandQueue executePending] [Line 159] FAILED pluginJSON = ["RedLaserPlugin1615451183","RedLaserPlugin","init",[]]

尝试了多种组合以使其工作,但没有一个成功。我错过了什么吗?

编辑:我在下面的文件夹中创建了一个 plugin.xml:

<js-module src="www/RedLaserPlugin.js" name="RedLaserPlugin">
<clobbers target="navigator.RedLaserPlugin" />

=3.8.0" />

<!-- config file -->
<config-file target="config.xml" parent="/*">
    <feature name="RedLaserPlugin">
        <param name="ios-package" value="RedLaserPlugin" />
    </feature>
</config-file>

<header-file src="platforms/ios/Production/Classes/MainViewController.h" />
<header-file src="platforms/ios/Production/Classes/MainViewController.m" />
<header-file src="platforms/ios/Production/Classes/MainViewController.xib" />
<header-file src="platforms/ios/Production/Classes/MainViewController.m" />
<header-file src="platforms/ios/Production/Plugins/RedLaserPlugin.h" />
<header-file src="platforms/ios/Production/Plugins/RedLaserPlugin.m" />
<header-file src="platforms/ios/Production/Plugins/RedLaserSDK.h" />
<header-file src="platforms/ios/Production/Plugins/RedLaserPluginFiles/RedLaserOverlayController.h" />
<header-file src="platforms/ios/Production/Plugins/RedLaserPluginFiles/RedLaserOverlayController.m" />
<header-file src="platforms/ios/Production/Plugins/RedLaserPluginFiles/RedLaserOverlayController.xib" />

并尝试使用 cmd 安装插件

cordova plugin add RedLaserPlugin.js

但它给了我终端中的错误,例如:

TypeError: Cannot read property 'match' of undefined

【问题讨论】:

    标签: cordova cordova-plugins


    【解决方案1】:

    我认为您的 plugin.xml 无效。

    这是我为自定义插件创建的示例 plugin.xml 模板:

    <?xml version="1.0" encoding="UTF-8"?>
    <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
        id="your_plugin_id"
        version="your_version">
    
        <name>plugin_name</name>
        <description>description</description>
        <license>Apache 2.0</license>
        <keywords>keyword_of_the_plugin</keywords>
    
        <!-- ios -->
        <platform name="ios">
          <source-file src="Plugin_source_file" />
    
          <framework src="required_framework" />
    
          <config-file target="config.xml" parent="/*/plugins">
              <feature name="feature_name">
                  <param name="ios-package" value="plugin_name"/>
              </feature>
          </config-file>
          <config-file target="config.xml" parent="/*">
            <access origin="*" />
          </config-file>
        </platform>
    
        <!-- android -->
        <platform name="android">
            <!-- android-specific elements -->
        </platform>
    </plugin>
    

    例如检查以下documentation

    【讨论】:

      【解决方案2】:

      我假设您获得了一个从 Cordova 3.5 生成的新 Xcode 项目。

      如果正确,您是否添加了要编译的插件源?

      转到 Build Phases 然后打开 Compiled Sources 下拉菜单。单击 + 并添加应该已经在您的插件目录中的缺少的插件源。

      【讨论】:

      • 已将文件添加到编译源。又复查了。 :-)
      • 你有这个插件的有效plugin.xml 吗?我遇到了缺少 plugin.xml 的问题,因为旧版本的 cordova 不需要它。
      • 添加了仍然没用的插件。查看已编辑的问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多