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

时间:2012-08-13 13:13:54

标签: 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标记
  5. 加载js文件
  6. 从AndroidMainfeast.xml
  7. 添加了权限
  8. 复制了包含“configs.xml”
  9. 的xml文件夹

    现在我不明白问题出在哪里。它显示以下错误,如屏幕截图所示 enter image description here

    这是我的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>
    

    有什么建议吗?谢谢!

13 个答案:

答案 0 :(得分:64)

config.xml不是configs.xml

根据日志,我发现您在应用res/xml目录中缺少此文件。它作为lib/android/res/xml/config.xml分发的一部分包含在内,因此将该文件复制到您的res/xml目录中,您应该全部设置。

答案 1 :(得分:39)

aharris88 in his answer to this question一样,从Phonegap 3.0迁移后,在我的Android手机上使用 Cordova 3.1.0 时出现[CORDOVA] Error initilizing Cordova: Class not found错误消息。

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

cordova platform rm android
cordova platform add android

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

答案 2 :(得分:15)

由于我删除了一个插件,因此出现此错误。我添加了

<plugin name="Device" value="org.apache.cordova.Device"/>
再次

到config.xml文件并修复它。

答案 3 :(得分:8)

我没有以下插件:

<plugin name="Device" value="org.apache.cordova.Device"/>

你必须把它放在<plugins></plugins>之间。 像

<plugins>
    <plugin name="Device" value="org.apache.cordova.Device"/>
</plugins>

答案 4 :(得分: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" />

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

现在所有这一切都应该自动发生,而不必触摸平台文件夹。但如果它搞砸了你可以通过手动将正确的文件复制到正确的文件夹中来解决它。

答案 5 :(得分: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=incubator-cordova-android.git;a=blob;f=framework/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());
...

应改为:

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

你可以阅读更多关于方法的信息&#34; getIdentifier(String name,String defType,String defPackage)&#34;在官方文件中

答案 6 :(得分:2)

您可以通过执行以下操作来使用phonegap命令行解决此问题:

  1. 删除merges / android,platforms / android,plugins / android.json

  2. 运行phonegap local build android

答案 7 :(得分:2)

找不到Class的同样问题。要看的一个问题是确保在构建上更新android.json(或ios.json)文件。我的实际上是空的。 另外,删除并添加一些其他帖子中提到的插件。 最后,对我有用的是确保在config.xml中引用了更正的插件:

<feature name="Device">
  <param name="android-package" value="org.apache.cordova.device.Device"/>
</feature>
<feature name="Camera">
  <param name="android-package" value="org.apache.cordova.camera.CameraLauncher"/>
</feature>
<feature name="Notification">
  <param name="android-package" value="org.apache.cordova.dialogs.Notification"/>
</feature>

请注意&#39; device.Device&#39;的双重命名。以及“摄像机”的分类。和对话&#39;插件。这个没有被Phonegap文档正确引用。

答案 8 :(得分:1)

所以在接近自杀之后,我发现我使用了cordova版本5.3.3和cordova-android版本5.0.0,不知何故我不知道可能有不兼容或者可能有bug ,所以我回到了cordova android 4.1.1

  cordova platform rm android
  cordova platform add android@4.1.1 

这节省了我

答案 9 :(得分:1)

我遇到了同样的错误:“错误初始化Cordova:未找到类”,使用cordova与visual studio 2015.但这不是唯一的错误,我的插件似乎没有得到低谷。我试过一切。从cordova platform rm/add android x1000次到手动删除和重新添加插件,似乎没有什么可以做到的。

enter image description here

然后我将taco.json文件中的cordova-cli从5.3.3更改为5.4.0并在我的设备上运行它。最后,这为我解决了整个问题。然后我将cordova版本降级回5.3.3(到目前为止,adb桥还不支持5.4.0版本)。试试吧!

答案 10 :(得分:0)

[在我的案例中解决]

首先,第六步是错误的:它是config.xml而不是configs.xml

尽管我在res / xml文件夹中有 config.xml ,但我遇到了同样的错误。 这是因为您必须手动安装基本API函数的插件。

通过控制台导航到项目文件夹并输入:

phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

您可以在phonegap文档中阅读更多内容(上一部分称为添加功能):Phonegap Doc

我还留下了我的config.xml文件

<?xml version='1.0' encoding='utf-8'?>
<widget id="io.cordova.helloCordova" version="2.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0">
    <name short="Menu">Menu Digital</name>
    <description>
        Description
    </description>
    <author email="asd@gmail.com" href="www.facebook.com/usr"> Name </author>
    <feature name="App">
        <param name="android-package" value="org.apache.cordova.App" />
    </feature>
    <feature name="http://api.phonegap.com/1.0/device" />
    <feature name="http://api.phonegap.com/1.0/media" />
    <feature name="Device">
        <param name="android-package" value="org.apache.cordova.device.Device" />
    </feature>
    <content src="index.html" />
    <feature name="App">
        <param name="android-package" value="org.apache.cordova.App" />
    </feature>
    <access origin="*" />
    <preference name="useBrowserHistory" value="true" />
    <preference name="exit-on-suspend" value="false" />
    <preference name="fullscreen" value="true" />
    <preference name="webviewbounce" value="true" />
</widget>

答案 11 :(得分:0)

我收到同样的错误,我查看了我的Cordova插件列表

运行命令&#34; cordova插件列表&#34;在我的Android项目目录中找到&#34; org.apache.cordova.device&#34;插件丢失。

我使用&#34; Cordova插件添加了cordova-plugin-device&#34;并且错误消失了。

答案 12 :(得分:0)

这可能发生,因为您的cordova插件与IONIC期望找到的路径不同:

您应该更正插件源文件夹中的文件 plugin.xml

<config-file target="app/src/main/res/xml/config.xml" parent="/*">

应为:

 <config-file target="res/xml/config.xml" parent="/*">

如果您尝试在Android Studio Logcat中搜索该错误,通常会发现以下内容:

io.ionic.starter E/chromium: [ERROR:service_manager.cc(156)] Connection InterfaceProviderSpec prevented service: content_renderer from binding interface: blink::mojom::BudgetService exposed by: content_browser
2019-02-22 13:40:06.144 30230-30258/com.android.webview:sandboxed_process0 E/chromium: [ERROR:BudgetService.cpp(167)] Unable to connect to the Mojo BudgetService.