PhoneGap - exec() 调用未知插件

PhoneGap - exec() call to unknown plugin

本文关键字:调用 未知 插件 exec PhoneGap      更新时间:2023-09-26

我一直在尝试在我的项目中使用 Phonegap 图像调整器插件,但我无法让它工作。

错误日志返回: D/PluginManager(13992): exec() call to unknown plugin: com.webXells.imageResizer

我已将所有必要的内容移动到我的项目文件夹中。结构如下:

/assets
 /js
  cordova.js
  imageresize.js
 /www
  index.html
  upload.html
/src
 /com
  /webXells
   /ImageResizer
     ImageResizerPlugin.java

我还将该插件包含在/res/xml config.xml中:

<feature name="imageResizer">
  <param name="android-package" value="com.webXells.imageResizer.ImageResizePlugin"/>
</feature> 

upload.html中,我像这样包含了插件:

<script type="text/javascript" charset="utf-8" src="../js/imageresize.js"></script>

这就是我调用方法来使用它的方式:

    function onPhotoDataSuccess(imageData) {
      window.imageResizer.resizeImage(
        function(data) { 
          var smallImage = document.getElementById('smallImage');
          smallImage.style.display = 'block';
          image.src = "data:image/jpeg;base64," + imageData; 
          //image.src = imageData; 
        },
        function (error) {
          console.log("Error : 'r'n" + error);
        },
        imageData,
        0.5,
        0.5,
        {
          imageDataType:ImageResizer.IMAGE_DATA_TYPE_BASE64,
          resizeType:ImageResizer.RESIZE_TYPE_FACTOR,
          format:'jpg'
        }
      );
}

所以,在imageresize.js里面,我想使用的方法看起来像这样。如有必要,您可以参考上面的链接:

ImageResizer.prototype.resizeImage = function(success, fail, imageData, width,
        height, options) {
    if (!options) {
        options = {}
    }
    var params = {
        data : imageData,
        width : width,
        height : height,
        format : options.format,
        imageDataType : options.imageType,
        resizeType : options.resizeType,
        quality : options.quality ? options.quality : 70
    };
    return cordova.exec(success,fail,"com.webXells.imageResizer","resizeImage",[params]);
}

在上面的代码中,我注意到com.webXells.imageResizer没有按照日志中报告的那样调用。让我感到困惑的是,我已经将其包含在config.xml中并将java文件移动到src文件夹中。为什么即使我已经做了所有必要的事情,也不能调用它?

我所做的一些研究,说在plugin.xml中声明插件,但我res/xml里面没有文件。所以,我把它放在config.xml里。其他人建议使用<gap:plugin name="com.phonegap.plugins.example" />但Eclipse发现错误。

那么,我该如何解决这个问题呢?我是否正确调用了 HTML 中的方法?还是我错过了什么?

从 cordova 3.5.0-0.2.6 开始,res/xml/config.xml 在构建时被覆盖。 尝试将功能标签添加到配置中.xml在您的应用程序中根目录。 为我工作。

您是使用 CLI 添加插件,例如"corodova 添加插件 xyz"还是手动将插件添加到 eclipse 项目?如果您手动添加插件,那么当运行"Cordova运行Android/iOS"时,res文件夹中的配置.xml将被覆盖,因此上述错误。我为此找到了一个黑客/解决方案,因为我使用的是不基于 CLI 的 revmob 插件,我们必须大量添加插件。在您的项目/插件文件夹中有 android.json,您必须在其中添加功能标签.xml以便配置在通过 CLI 运行应用程序时重写

这是示例

"config_munge": {
 "res/xml/config.xml": {
        "/*": {
            "<feature name='"Device'"><param name='"android-package'" value='"org.apache.cordova.device.Device'" /></feature>": 1,
            "<feature name='"RevMobPlugin'"><param name='"android-package'" value='"com.revmob.cordova.RevMobPlugin'" /></feature>": 0
        }
    }
},

试试吧