it-swarm.com.ru

Ошибка инициализации Cordova: класс не найден

Я следовал руководству по Phonegap с официального сайта Phonegap.com (начало работы с Android). 

Я создал проект, выполнив все шаги.

  1. создал действие и расширен из "DroidGap" и добавил метод loadURL из onCreate ().
  2. В соответствующую папку добавлены cordova-2.0.0.js и cordova-2.0.0.jar. 
  3. Добавил файл jar в путь сборки
  4. Загрузил файл js из тега html
  5. Добавлены разрешения от AndroidMainfeast.xml
  6. скопировал папку xml, содержащую "configs.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>

Любой совет? Спасибо!

55
npanigrahy

Это config.xml, а не configs.xml

Судя по журналам, я вижу, что вам не хватает этого файла в каталоге res/xml вашего приложения. Он включен как часть дистрибутива в lib/Android/res/xml/config.xml, поэтому скопируйте этот файл в каталог res/xml, и все будет готово.

64
Simon MacDonald

Так же, как aharris88 в своем ответе на этот вопрос , у меня появилось сообщение об ошибке [CORDOVA] Error initilizing Cordova: Class not found при использовании Cordova 3.1.0 на моем телефоне с Android после перехода с Phonegap 3.0.

Все возиться с файлом config.xml в каталоге /platforms/Android/res/xml не помогло. Основываясь на ответе Stackoverflow, упомянутом выше, я попытался «начать заново», переустановив поддержку платформы Android:

cordova platform rm Android
cordova platform add Android

После этого шага он снова заработал, и я смог без проблем выполнить cordova build Android && cordova run Android.

39
bflesch

У меня была эта ошибка из-за плагина, который я удалил. Я добавил

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

к файлу config.xml снова, и это исправило это.

14
Kazmin

Мой у вас нет следующего плагина:

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

Вы должны поместить это между <plugins></plugins>.

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

У меня была эта проблема при использовании phonegap 3.x, и проблема заключалась в том, что phonegap неправильно установил плагины, или они просто испортили путь. В основном, когда вы устанавливаете плагины и собираете для платформы, он берет файлы javascript из plugins/org.Apache.cordova.core.specific-plugin/www и помещает их в платформы/Android/assets/www/plugins/org.Apache. cordova.core.specific-plugin/www, а затем он берет файлы Java (или Objective C для iOS) и помещает их в платформы/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" />

Итак, это говорит о том, что в платформах/Android/src/org/Apache/cordova/networkinformation должен присутствовать NetworkManager.Java. И этот файл можно скопировать из плагинов/org.Apache.cordova.core.network-information/src/Android/NetworkManager.Java

Теперь все это должно происходить автоматически, не касаясь папки платформ. Но если он испортился, вы можете исправить это, вручную скопировав нужные файлы в нужные папки.

6
aharris88

Ну, ошибка, которую я нашел:

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());
...

вы можете прочитать больше о методе "getIdentifier (String name, String defType, String defPackage)" в официальном документе.

6
Eric

Вы можете решить эту проблему при использовании командной строки phonegap, выполнив следующие действия:

  1. Удалить слияния/Android, платформы/Android, плагины/Android.json

  2. запустить phonegap local build Android

2
Roger

Была такая же проблема с классом не найден. Одна проблема, на которую стоит обратить внимание, - убедиться, что файл 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>

Обратите внимание на двойное именование «device.Device», а также подклассы плагинов «camera» и «dialogs». Это просто неправильно указано в документации Phonegap.

2
John Kelleher

Итак, после того, как я чуть не покончил с собой, я обнаружил, что использую Cordova версии 5.3.3 и Cordova-Android версии 5.0.0, почему-то я не знаю, может быть, они не совместимы или может быть ошибка, поэтому я отступаю на кордову Android 4.1.1

  cordova platform rm Android
  cordova platform add [email protected] 

и это спасло меня

1
Pranay Dutta

Я столкнулся с той же ошибкой: «Ошибка инициализации Cordova: класс не найден» при использовании cordova с visual studio 2015. Но это была не единственная ошибка, похоже, ни один из моих плагинов не прошел. Я пробовал обо всем. От cordova platform rm/add Android x1000 раз, до удаления и повторного добавления плагинов вручную, похоже, ничего не получится. 

 enter image description here

Затем я изменил свой cordova-cli в файле taco.json с 5.3.3 до 5.4.0 и запустил его на своем устройстве. Наконец это решило всю проблему для меня. Затем я понизил версию cordova до 5.3.3 (версия 5.4.0 пока не поддерживается мостом adb). Попробуйте!

1
Chris

[Решено в моем случае]

Во-первых, шестой шаг неверен: это config.xml, а не configs.xml

У меня та же ошибка, несмотря на то, что у меня есть config.xml в папке res/xml . Это потому, что вам нужно вручную устанавливать плагины для основных функций API.

Через консоль перейдите в папку вашего проекта и введите:

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

Вы можете прочитать больше здесь в phonegap Doc (последний раздел называется добавлением функций): 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="[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

Это может произойти, потому что ваш плагин 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.
0
Alessandro Ornano

Я получаю ту же ошибку, я проверил свой список плагинов Cordova 

запустив команду «список плагинов cordova» в моем каталоге проектов Android и обнаружив, что плагин «org.Apache.cordova.device» отсутствует.

Я обновил его, используя «Cordova plugin add cordova-plugin-device», и ошибка исчезла.

0
Mandar Khole