初始化Cordova时出错:找不到类

Nil*_*hal 55 android cordova

我从官方的Phonegap.com网站(开始使用Android)开始关注Phonegap的教程.

我已经按照所有步骤创建了项目.

  1. 创建活动并从"DroidGap"扩展并从onCreate()添加loadURL方法.
  2. 在相应的文件夹中添加了cordova-2.0.0.js和cordova-2.0.0.jar.
  3. 将jar文件添加到构建路径
  4. 从html标记加载了js文件
  5. 添加了AndroidMainfeast.xml的权限
  6. 复制包含"configs.xml"的xml文件夹

现在我不明白问题出在哪里.它显示以下错误,如屏幕截图所示 在此输入图像描述

这是我的HTML文件

<!DOCTYPE html>
<html>
  <head>
    <title>Notification Example</title>

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

    // Wait for Cordova to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // Cordova is ready
    //
    function onDeviceReady() {
        // Empty
    }

    // Show a custom alert
    //
    function showAlert() {
        navigator.notification.alert(
            'You are the winner!',  // message
            'Game Over',            // title
            'Done'                  // buttonName
        );
    }

    // Beep three times
    //
    function playBeep() {
        navigator.notification.beep(3);
    }

    // Vibrate for 2 seconds
    //
    function vibrate() {
        navigator.notification.vibrate(2000);
    }

    </script>
  </head>
  <body>
    <p><a href="#" onclick="showAlert()">Show Alert</a></p>
    <p><a href="#" onclick="playBeep()">Play Beep</a></p>
    <p><a href="#" onclick="vibrate()">Vibrate</a></p>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢!

Sim*_*ald 64

事实config.xml并非如此configs.xml.

根据日志我发现你在apps res/xml目录中遗漏了这个文件.它作为分发的一部分包含在内,lib/android/res/xml/config.xml因此将该文件复制到您的res/xml目录中,您应该全部设置.


小智 40

就像aharris88在回答这个问题时一样,我在从Phonegap 3.0迁移后在我的Android开发手机上[CORDOVA] Error initilizing Cordova: Class not found使用Cordova 3.1.0时出现了错误信息.

所有摆弄目录中的config.xml文件都/platforms/android/res/xml无济于事.基于上面提到的Stackoverflow答案,我尝试通过重新安装Android平台支持来"重新开始":

cordova platform rm android
cordova platform add android
Run Code Online (Sandbox Code Playgroud)

在这一步之后它再次起作用,我能够cordova build android && cordova run android没有任何进一步的问题.


Kaz*_*min 15

我有一个错误,因为我删除了一个插件.我补充道

<plugin name="Device" value="org.apache.cordova.Device"/>
Run Code Online (Sandbox Code Playgroud)

再次到config.xml文件并修复它.

  • 太好了!我不明白在运行项目之前我是如何解决所有两个问题的,这个软件是如何定期发布的,但它有这样的错误 (3认同)

Pra*_*ani 8

我没有以下插件:

<plugin name="Device" value="org.apache.cordova.Device"/>
Run Code Online (Sandbox Code Playgroud)

你必须把它放在两者之间<plugins></plugins>.喜欢

<plugins>
    <plugin name="Device" value="org.apache.cordova.Device"/>
</plugins>
Run Code Online (Sandbox Code Playgroud)


aha*_*s88 6

我使用phonegap 3.x时出现了这个问题,问题原来是手机盖没有正确安装插件,或者他们只是搞砸了.基本上,当您安装插件并为平台构建时,它会从plugins/org.apache.cordova.core.specific-plugin/www获取javascript文件,并将它们放在platforms/android/assets/www/plugins/org.apache中. cordova.core.specific-plugin/www然后它接受Java文件(或iOS的目标C)并将它们放在平台/ android/src/org/apache/cordova/specificplugin中

所有这些都是由plugins/org.apache.cordova.core.specific-plugin/plugin.xml指定的.如果你查看一个plugins.xml,你会看到类似的东西:

<source-file src="src/android/NetworkManager.java" target-dir="src/org/apache/cordova/networkinformation" />
Run Code Online (Sandbox Code Playgroud)

所以这告诉你在platforms/android/src/org/apache/cordova/networkinformation中应该有NetworkManager.java.该文件可以从plugins/org.apache.cordova.core.network-information/src/android/NetworkManager.java中复制

现在所有这一切都应该自动发生而无需触摸平台文件夹.但如果它搞砸了你可以通过手动将正确的文件复制到正确的文件夹来修复它.


Eri*_*ric 6

好吧,我发现的错误是:

05-28 08:19:53.139:E/PluginManager(1478):================================== ================================================== = 05-28 08:19:53.139:E/PluginManager(1478):错误:缺少config.xml.将res/xml/config.xml添加到项目中.05-28 08:19:53.139:E/PluginManager(1478):https://git-wip-us.apache.org/repos/asf?p = plasticator-cordova-android.git;a=blob;f =框架/ RES/XML/plugins.xml

但我在我的项目中找到了/res/xml/config.xml

最后,我在org.apache.cordova.api.PluginManager中发现错误:

public void loadPlugins() {
int id = this.ctx.getActivity().getResources().getIdentifier("config", "xml",    this.ctx.getActivity().getClass().getPackage().getName());
...
Run Code Online (Sandbox Code Playgroud)

应改为:

public void loadPlugins() {
int id = this.ctx.getActivity().getResources().getIdentifier("config", "xml",    this.ctx.getActivity().getPackageName());
...
Run Code Online (Sandbox Code Playgroud)

您可以在官方doc中阅读有关"getIdentifier(String name,String defType,String defPackage)"方法的更多信息