【问题标题】:Cordova IOS Plugin not found when i run the project运行项目时找不到 Cordova IOS 插件
【发布时间】:2016-04-24 19:23:52
【问题描述】:

我创建了一个 cordova 项目 cordova create sampleApp com.sample.app sampleApp 然后我做了cordova平台添加ios,然后cordova插件添加cordova-plugin-device

文件:

平台/ios/ios.json

在 ios.json 中,我在下面的 json 中添加了一个名为 sayHelloPlugin 的自定义插件

{
    "prepare_queue": {
        "installed": [],
        "uninstalled": []
    },
    "config_munge": {
        "files": {
            "config.xml": {
                "parents": {
                    "/*": [
                        {
                            "xml": "<feature name=\"Device\"><param name=\"ios-package\" value=\"CDVDevice\" /></feature>",
                            "count": 1
                        },
                        {
                            "xml": "<feature name=\"sayHelloPlugin\"><param name=\"ios-package\" value=\"sayHelloPlugin\" /></feature>",
                            "count": 1
                        }
                    ]
                }
            }
        }
    },

}

platforms/ios/sampleApp/config.xml

在 config.xml 中我也添加了

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

www/js/index.js 我添加了对本机目标 c 函数的调用作为

cordova.exec(sayHelloSuccess, sayHelloFailure, "SayHelloPlugin", "sayHello", [name]);

function test(){        
     alert("Received Event");
}

function sayHelloSuccess(data){
    alert("Success");
}

function sayHelloFailure(data){
    alert("Error");
}

我的目标类看起来像

#import "SayHelloPlugin.h"

@implementation SayHelloPlugin

- (void)sayHello:(CDVInvokedUrlCommand*)command{

    NSString *responseString =
        [NSString stringWithFormat:@"Hello %@", [command.arguments objectAtIndex:0]];

    CDVPluginResult *pluginResult =
        [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:responseString];

    [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}

@end

当我进行科尔多瓦构建 ios 时,构建成功。 当我模拟并运行时,我收到一条错误消息

2016-01-19 05:39:44.017 sampleApp[21225:1854134] CDVPlugin class sayHelloPlugin (pluginName: SayHelloPlugin) does not exist.
2016-01-19 05:39:44.018 sampleApp[21225:1854134] ERROR: Plugin 'SayHelloPlugin' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
2016-01-19 05:39:44.018 sampleApp[21225:1854134] -[CDVCommandQueue executePending] [Line 159] FAILED pluginJSON = ["SayHelloPlugin535510559","SayHelloPlugin","sayHello",["Hello"]]

如何解决这个问题?

【问题讨论】:

    标签: ios iphone xcode cordova cordova-plugins


    【解决方案1】:

    错误清楚地表明未找到 sayHelloPlugin。您演示了如何添加设备插件,而不是特定插件。

    【讨论】:

    • 是的 sayHelloPlugin 是我的自定义插件,我调用了 cordova.exec(sayHelloSuccess, sayHelloFailure, "SayHelloPlugin", "sayHello", [name]);并且还在 config.xml 和 ios.json 中添加了相同的内容
    • 好的,那么您是否按照说明添加自己的插件?您的问题 (afaik) 中没有任何内容可以解决这个问题。
    • 没有什么特别突出的——但我只构建了自定义的 Android 插件。我建议仔细检查文档:cordova.apache.org/docs/en/latest/guide/platforms/ios/…。也许你忘记构建插件了。
    【解决方案2】:

    创建您可能需要使用 Plugman 的自定义插件。

    1) 安装 Plugman

    $npm install -g plugman
    

    2) 开始在 CLI 中使用 Plugman 创建自定义插件,命令如下:

    plugman create --name pluginName --plugin_id "com.pluginName" --plugin_version 1.0.0 --project "PLUGIN_DIR/com.pluginName"
    

    3) 为您的自定义插件添加平台

    plugman platform add --platform_name ios
    

    4) 创建并添加一个 package.json

    注意:如果点击“EACCESS:权限被拒绝,打开..” 请在命令前添加“sudo”

    plugman createpackagejson pluginName
    

    参考文档链接: https://cordova.apache.org/docs/en/latest/guide/hybrid/plugins/index.html

    【讨论】:

      猜你喜欢
      • 2013-06-27
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多