ios – 找不到插件,或者不是CDVPlugin.检查config.xml中的插件映射

我在plugin.xml中声明了我的iOS插件文件,如下所示:
<config-file target="config.xml" parent="/*">
      <feature name="CDVOP">
          <param name="ios-package" value="CDVOP"/>
      </feature>
  </config-file>

  <header-file src="src/ios/CDVOP.h" />
  <source-file src="src/ios/CDVOP.m" />

插件JavaScript文件中,我有这个函数,我稍后从JavaScript应用程序调用

showCatPictures: function(interval) {
  exec(null,null,'CDVOP','showCatPictures',[interval]);   
},

我正在运行从xcode使用此插件的应用程序来查看调试输出.当我调用showCatPictures函数时,我得到了这个:

OP Cordova Tests[1122:60b] ERROR: Plugin 'CDVOP' not found,or is not a CDVPlugin. Check your plugin mapping in config.xml.
2014-02-14 16:23:45.233 OP Cordova Tests[1122:60b] -[CDVCommandQueue executePending] [Line 127] Failed pluginJSON = [
  "INVALID","CDVOP","showCatPictures",[
    30
  ]
]

我怀疑这可能与我导入的所有东西有关,所以这里是CDVOP.h

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <Cordova/CDVPlugin.h>
#import <Cordova/CDV.h>
#import <Cordova/CDVViewController.h>

//OP SDK
#import "OpenpeerSDK/HOPStack.h"
#import "OpenpeerSDK/HOPLogger.h"
#import "OpenpeerSDK/HOPMediaEngine.h"
#import "OpenpeerSDK/HOPCache.h"
#import "OpenpeerSDK/HOPAccount.h"
#import "OpenpeerSDK/HOPIdentity.h"

@interface CDVOP : CDVPlugin <UIWebViewDelegate> {
    NSString* callbackId;
    UIImageView* peerImageView;
    UIImageView* selfImageView;
}

@property (nonatomic,copy) NSString* callbackId;
@property (retain,nonatomic) UIImageView *peerImageView;
@property (retain,nonatomic) UIImageView *selfImageView;

- (void) authorizeApp:(CDVInvokedUrlCommand*)command;
- (void) configureApp:(CDVInvokedUrlCommand*)command;
- (void) getAccountState:(CDVInvokedUrlCommand*)command;
- (void) startLoginProcess:(CDVInvokedUrlCommand*)command;
- (void) showCatPictures:(CDVInvokedUrlCommand*)command

@end

这是CDVOP.m的顶部:

#import "CDVOP.h"

@implementation CDVOP

@synthesize webView,selfImageView,peerImageView,callbackId;

-(CDVPlugin*) initWithWebView:(UIWebView*)theWebView
{
    self = (CDVOP*)[super initWithWebView:theWebView];
    NSLog(@">>> initializing with cordova webView <<<"); // actually this does not get called!
    return self;
}

// stress test UIImageViews using a series of cat pictures
- (void)showCatPictures:(CDVInvokedUrlCommand*)command
{   
    //initialize and configure the image view
    CGRect selfRect = CGRectMake(0,100.0,200.0);
    self.selfImageView = [[UIImageView alloc] initWithFrame:selfRect];
    [self.webView.superview addSubview:self.selfImageView];

    // load pictures and start animating
    NSLog(@"displaying cat pictures");
    selfImageView.animationImages = [NSArray arrayWithObjects:
      [UIImage imageNamed:@"1.JPG"],[UIImage imageNamed:@"2.JPG"],[UIImage imageNamed:@"3.JPG"],[UIImage imageNamed:@"4.JPG"],[UIImage imageNamed:@"5.JPG"],[UIImage imageNamed:@"6.JPG"],[UIImage imageNamed:@"7.JPG"],[UIImage imageNamed:@"8.JPG"],nil];

    selfImageView.animationDuration = 0.3;
    [selfImageView startAnimating];
}

任何想法为什么插件似乎没有正确初始化,为什么我不能用exec调用它的方法

解决方法

这是我在问题中忘记提及的一个不重要的细节.这是使用插件的示例应用程序中的www / config.xml.你能发现这个问题吗?
<widget id="org.sample.test" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>My Cordova Test</name>
    <description>
        A series of tests demonstrating the use of my cordova plugin
    </description>
    <author email="" href="">
        That would be me
    </author>
    <content src="index.html" />
    <access origin="*" />
</widget>

请注意应用程序名称中的空格< name> My Cordova Test< / name>.这似乎最初起作用,但它在文件名称中放置空格,以后将托管您的插件.这足以干扰插件安装过程.这就是我为解决这个问题所做的工作:

>将测试应用的名称更改为MyCordovaTest
> cordova平台删除ios
> cordova插件删除org.myplugin.cordova
> cordova平台添加ios
> cordova插件添加../my-plugin
> cordova build ios

现在插件已正确安装并按预期进行初始化.非常感谢#phonegap IRC会议室中帮助我调试此问题的优秀人员.我希望这可以帮助别人.

相关文章

背景 前端时间产品经理决定使用百度统计,使得 工程B 中原统计sdk-友盟统计,需要被去除。之前尝试去除...
结论: alloc负责分配内存和创建对象对应的isa指针; init只是返回alloc生成的对象。 所以alloc后,多次...
更新 如果UI愿意把启动图切割成n份,按一定约束在launchscreen.storyboard中进行排版,启动图效果会更好...
最近在看一本书《Effective OC 2.0》,今天看到有个tip是OC适中循环各自优劣性,作者最终推荐此块循环。...
// // ViewController.m // paintCodeTestOC //gif // Created by LongMa on 2019/7/25. // #import &a...
背景介绍 一般情况下,出于省电、权限、合理性等因素考虑,给人的感觉是很多奇怪的需求安卓可以实现,但...