未find插件,或者不是CDVPlugin。 在config.xml中检查你的插件映射
我已经在plugin.xml中声明了我的插件文件,如下所示:
<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文件中,我有这个function,我稍后从JavaScript应用程序调用
showCatPictures: function(interval) { exec(null, null, 'CDVOP', 'showCatPictures', [interval]); },
我正在运行从xcode使用这个插件的应用程序来查看debugging输出。 我在调用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, 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>
的空格。 这似乎起初工作,但它把文件夹名称中的空间,稍后将主持您的插件。 这足以干扰插件安装过程。 这是我所做的解决这个问题:
- 将testing应用程序的名称更改为
MyCordovaTest
-
cordova platform remove ios
-
cordova plugin remove org.myplugin.cordova
-
cordova platform add ios
-
cordova plugin add ../my-plugin
-
cordova build ios
现在该插件已正确安装并按预期进行了初始化。 非常感谢#phonegap
IRC会议室的好人帮我debugging过这个问题。 我希望这可以帮助别人。
- iOS应用程序基本path
- Phonegap /cordova相机插件 – 如何获取照片的date/时间戳?
- 通过PHP SDKvalidationFacebook API访问令牌和用户ID?
- 无需用户知道,就可以使用基于cordova / phonegap的现有原生应用程序进行交换
- 如何在使用cordova文件插件时从iOS中导出文件?
- PhoneGap / iOS上的SQLite数据库 – 超过5MB的可能
- API的phonegap 3.3.0相机为IOS不工作
- Phonegap文件插件 – 将文件从应用程序包复制到持久性存储
- 在IOS9的Cordova应用上使用jQuery / Javascript的window.history问题