web-dev-qa-db-fra.com

Erreur lors de l'initialisation de Cordova: Classe non trouvée

J'ai suivi le tutoriel de Phonegap depuis le site officiel Phonegap.com (initiation à Android). 

J'ai créé un projet en suivant toutes les étapes.

  1. activité créée et étendue à partir de "DroidGap" et ajout de la méthode loadURL de onCreate ().
  2. Cordova-2.0.0.js et cordova-2.0.0.jar ont été ajoutés au dossier respectif. 
  3. Ajout du fichier jar au chemin de construction
  4. Chargé le fichier js à partir de la balise html
  5. Ajout des autorisations de AndroidMainfeast.xml
  6. copié le dossier XML contenant "configs.xml"

Maintenant, je ne comprends pas où est le problème. Il montre l'erreur ci-dessous, comme indiqué dans la capture d'écran enter image description here

Voici mon fichier 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>

Aucun conseil? Merci!

55
npanigrahy

C'est config.xml pas configs.xml

D'après les journaux que je vois, ce fichier manque dans votre répertoire apps res/xml. Il est inclus dans la distribution à lib/Android/res/xml/config.xml donc copiez ce fichier dans votre répertoire res/xml et vous devriez être prêt.

64
Simon MacDonald

Tout comme aharris88 dans sa réponse à cette question , le message d'erreur [CORDOVA] Error initilizing Cordova: Class not found apparaissait lors de l'utilisation de Cordova 3.1.0 sur mon téléphone dev Android après la migration de Phonegap 3.0.

Tous bidouiller avec le fichier config.xml dans le répertoire /platforms/Android/res/xml n'a pas aidé. Sur la base de la réponse Stackoverflow mentionnée ci-dessus, j'ai essayé de "tout recommencer" en réinstallant le support de la plateforme Android:

cordova platform rm Android
cordova platform add Android

Après cette étape, cela a fonctionné à nouveau et j'ai pu cordova build Android && cordova run Android sans autre problème.

39
bflesch

J'ai eu cette erreur à cause d'un plugin que j'ai supprimé. J'ai ajouté

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

dans le fichier config.xml à nouveau et cela a été corrigé.

14
Kazmin

Mon tu n'as pas plugin suivant:

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

Vous devez mettre cela entre <plugins></plugins>. Comme

<plugins>
    <plugin name="Device" value="org.Apache.cordova.Device"/>
</plugins>
7
Pratik Butani

J'ai eu ce problème en utilisant phonegap 3.x et le problème s'est avéré que phonegap n'avait pas correctement installé les plugins, ou ils se sont simplement égarés en cours de route. Fondamentalement, lorsque vous installez les plugins et que vous les créez pour une plate-forme, il extrait les fichiers javascript de plugins/org.Apache.cordova.core.specific-plugin/www et les place dans plates-formes/Android/assets/www/plugins/org.Apache. cordova.core.specific-plugin/www, puis prend les fichiers Java (ou Objective C pour iOS) et les place dans plates-formes/Android/src/org/Apache/cordova/specificplugin

Et tout cela est spécifié par plugins/org.Apache.cordova.core.specific-plugin/plugin.xml. Si vous regardez dans un fichier plugins.xml, vous devriez voir quelque chose comme:

<source-file src="src/Android/NetworkManager.Java" target-dir="src/org/Apache/cordova/networkinformation" />

Cela vous indique donc que, dans les plates-formes/Android/src/org/Apache/cordova/networkinformation, il doit y avoir NetworkManager.Java. Et ce fichier peut être copié à partir de plugins/org.Apache.cordova.core.network-information/src/Android/NetworkManager.Java

Maintenant, tout cela est supposé se produire automatiquement sans avoir à toucher le dossier des plates-formes. Mais si cela ne fonctionne pas, vous pouvez le réparer en copiant manuellement les fichiers appropriés dans les dossiers appropriés.

6
aharris88

Eh bien, l'erreur que j'ai trouvée est la suivante:

05-28 08: 19: 53.139: E/PluginManager (1478): ================================ =============================================== = 05-28 08: 19: 53.139: E/PluginManager (1478): ERREUR: le fichier config.xml est manquant. Ajoutez res/xml/config.xml à votre projet . 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

mais j'ai trouvé /res/xml/config.xml dans mon projet

enfin, j'ai trouvé une erreur dans org.Apache.cordova.api.PluginManager:

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

devrait changer à:

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

vous pouvez en savoir plus sur la méthode "getIdentifier (Nom de la chaîne, String defType, String defPackage)" dans la documentation officielle

6
Eric

Vous pouvez résoudre ce problème lorsque vous utilisez la ligne de commande phonegap en procédant comme suit:

  1. Supprimer les fusions/Android, plates-formes/Android, plugins/Android.json

  2. exécuter phonegap local build Android

2
Roger

A eu le même problème avec la classe non trouvée. Un problème à examiner est de s'assurer que le fichier Android.json (ou ios.json) est mis à jour sur une version. Le mien était effectivement vide . En outre, supprimez et rajoutez les plugins comme mentionné dans d'autres publications . Enfin, ce qui a fonctionné pour moi était de m'assurer que les plugins étaient corrigés dans le fichier 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>

Notez le double nom de 'device.Device' ainsi que la sous-classification des plugins 'camera' et 'dialogs'. Ceci n’est simplement pas correctement référencé par la documentation de Phonegap.

2
John Kelleher

Donc, après avoir failli me tuer, j'ai découvert que j'utilisais cordova version 5.3.3 et cordova-Android version 5.0.0, mais je ne sais pas, il se peut qu'il n'y ait pas de compatibilité ou il peut y avoir un bug à cordova Android 4.1.1

  cordova platform rm Android
  cordova platform add [email protected] 

et cela m'a sauvé

1
Pranay Dutta

J'ai rencontré la même erreur: "Erreur lors de l'initialisation de Cordova: Classe non trouvée", lors de l'utilisation de Cordova avec Visual Studio 2015. Mais ce n'était pas la seule erreur, aucun de mes plugins ne semble pénétrer. J'ai essayé de tout. De cordova platform rm/add Android x1000 fois, à la suppression et à l'ajout manuel des plugins, rien ne semble faire l'affaire. 

 enter image description here

Ensuite, j'ai changé mon cordova-cli dans le fichier taco.json de 5.3.3 à 5.4.0 et je l'ai exécuté sur mon appareil. Enfin, cela a réglé le problème pour moi. J'ai ensuite rétrogradé la version cordova à la version 5.3.3 (la version 5.4.0 n’est pas encore prise en charge par le pont adb). Essaye le!

1
Chris

[Résolu dans mon cas]

Premièrement, la sixième étape est fausse: il s'agit de config.xml et non de configs.xml

J'ai la même erreur malgré mon dossier config.xml dans le dossier res/xml ..__ C'est parce que vous devez installer manuellement des plugins pour les fonctions de base de l'API.

Via la console, accédez au dossier de votre projet et tapez:

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

Vous pouvez en savoir plus ici dans phonegap Doc (dernière section intitulée ajouter des fonctionnalités): Phonegap Doc

Je vous laisse aussi mon fichier 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="[email protected]" 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>
0
Gonzalo

Cela pourrait arriver car votre plugin cordova a un chemin différent de ce que IONIC s'attend à trouver:

Vous devez corriger le fichier plugin.xml dans le dossier source de votre plugin:

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

devrait être:

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

Si vous essayez de rechercher cette erreur dans Android Studio Logcat, vous trouvez généralement quelque chose comme:

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.
0
Alessandro Ornano

Je reçois la même erreur, j'ai vérifié ma liste de plugins Cordova 

en exécutant la commande "Cordova plugin list" dans le répertoire de mon projet Android et que le plug-in "org.Apache.cordova.device" est manquant.

Je l'ai mis à jour en utilisant "Cordova plugin add Cordova-plugin-device" et Erreur avait disparu.

0
Mandar Khole