【问题标题】:PhoneGap 3 plugin: exec() call to unknown plugin "..."PhoneGap 3 插件:exec() 调用未知插件“...”
【发布时间】:2013-08-01 05:02:23
【问题描述】:

我一直在尝试将插件升级到 v3,并且我已经设法解决插件加载问题,并且我已经设法将插件公开给客户端环境(更改 exec 的工作方式,等)。

但是当我用

观看 adb logcat

adb logcat | grep -v nativeGetEnabledTags | grep -i web

我收到此错误:

D/PluginManager(11189): exec() call to unknown plugin: WebSocket

我不知道出了什么问题,我不确定为什么 Android 版本看不到插件。

我已将所有代码推送到 github 存储库,因此,如果有人能够复制并提供帮助,我将非常欢迎!我也在尝试写下我的转换经验并记录我遇到的问题(自述文件中有一些,虽然它不完整):

这里是回购:https://github.com/remy/phonegap_test

——雷米

【问题讨论】:

    标签: android cordova phonegap-plugins


    【解决方案1】:

    您是否获得了成功的 deviceready 事件?过去,当我的应用程序由于代码中的其他原因而导致我的 deviceready 事件永远不会触发时,我曾经遇到过这个错误。在我的情况下,静默错误是由于我的 app.initialize() 代码块中的一些 javascript 语法错误造成的。

    【讨论】:

      【解决方案2】:

      我的手机间隙版本 (2.6) 突然出现了同样的问题。之前工作的完全相同的代码,所以它必须是一个构建问题。

      您是否尝试打开您的 apk 并查看是否包含 config.xml(其中定义了插件)。

      【讨论】:

        【解决方案3】:

        在“res/xml/config.xml”中定义你的插件

        在文件中找到这些行

        <feature name="App">
                <param name="android-package" value="org.apache.cordova.App" />
        </feature>
        

        并在后面附加这些:

        <feature name="MyPluginName">
                <param name="android-package" value="com.phonegap.plugins.plugin.class" />
        </feature>
        

        用实际名称替换虚拟名称(MyPluginName、plugins.plugin.class 等)。当我收到此错误时,这对我有用:

        exec() 调用未知插件:MyPluginName

        【讨论】:

        • 如果feature 中的name 属性与param 中的value 属性相同,则我的工作正常。所以,&lt;feature name="com.phonegap.plugins.plugin.class"&gt;
        • 谢谢,完美解决了我的问题!
        • Thaks,为我工作!但是每次我运行cordova prepare android 时,它都会从 res/xml/config.xml 中删除 MyPlugin 的条目,并且我需要在运行项目之前手动更新它。你知道如何解决这个问题吗?
        • 除了 phonegap 之外的另一个包中的自定义插件怎么样?我正在尝试使用cordova.require("cordova/plugin/MyPluginName"); 将它加载到js 中,但它在src/ 中的不同位置。我使用的值类似于com.mycompanyname.modulename.pugins.MyPluginName。对吗?
        • @AimanB 您应该将其添加为答案-唯一对我有用的东西!
        【解决方案4】:

        在 Android Studio 1.0.1(在 Mac OS 10.9.5 上运行)+ Cordova 4.2.0 上,我修复了一个类似的问题(“exec() call to unknown plugin”),如下所示:

        恰好标签的内容:

        <feature name="MyPluginName">
        <param name="android-package" value="com.phonegap.plugins.plugin.class" />
        </feature>
        

        YourCordovaProjectName/config.xml 下没有在 YourCordovaProjectName/platforms/android/res/xml/config.xml

        下重复

        我必须更改 YourCordovaProjectName/platforms/android/res/xml/ 下的文件 config.xml 并添加标签:

            <feature name="MyPluginName">
            <param name="android-package" value="com.phonegap.plugins.plugin.class" />
            </feature>
        

        然后它起作用了。

        我还要补充一点,我在IOS遇到了同样的问题,我不得不手动输入:

        <feature name="MyPluginName">
        <param name="ios-package" value="com.phonegap.plugins.plugin.class" />
        </feature>
        

        在文件夹YourCordovaProjectName/platforms/ios/YourCordovaProjectName下的文件config.xml中

        希望这将在未来得到修复,并且 YourCordovaProjectName/config.xml 的内容将正确反映在每个特定平台下的 config.xml 文件中(它曾经在几个月前的 Android)。

        【讨论】:

          【解决方案5】:

          要在Android中的ProjectFolder/platforms/android/res/xml/config.xml下添加插件定义,更新ProjectFolder/plugins/android.json

          “cordova build”命令将读取这个 android.json 文件并使用这里提到的所有插件自动更新 ProjectFolder/platforms/android/res/xml/config.xml。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多