Несколько файлов dex определяют Lorg/apache/cordova/BuildHelper

У меня проблемы со вчерашнего дня. В моей стажировке я столкнулся со следующей ошибкой сборки, но я не мог понять, почему:

$ cordova build android

[...]

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lorg/apache/cordova/BuildHelper;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 3.379 secs
Error: /home/thor/Projects/App_CDP/platforms/android/gradlew: Command failed with exit code 1 Error output:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lorg/apache/cordova/BuildHelper;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

Вот вывод cordova plugins list, у меня нет конфликта поддержки-v4/v13, как вы можете видеть:

$ cordova plugin list
com.googlemaps.ios 2.2.0-fixed "Google Maps SDK for iOS"
com.moust.cordova.videoplayer 1.0.1 "Video Player"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-compat 1.1.0 "Compat"
cordova-plugin-console 1.0.5 "Console"
cordova-plugin-device 1.1.4 "Device"
cordova-plugin-facebook4 1.9.1 "Facebook Connect"
cordova-plugin-file 4.0.0 "File"
cordova-plugin-file-transfer 1.6.3 "File Transfer"
cordova-plugin-geolocation 2.4.3 "Geolocation"
cordova-plugin-googlemaps 1.4.0 "phonegap-googlemaps-plugin"
cordova-plugin-inappbrowser 1.7.1 "InAppBrowser"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.2.2 "StatusBar"
cordova-plugin-whitelist 1.3.1 "Whitelist"
ionic-plugin-keyboard 2.2.1 "Keyboard"
{}

Вот еще несколько сведений:

$ cordova -v
7.0.1

$ ionic -v
2.1.4

Ответы

Ответ 1

Скорее всего, вы используете недавно выпущенный [email protected], который теперь включает в себя BuildHelper.java (как отмечено в сообщении об ошибке) и PermissionHelper.java, но у вас все еще есть устаревший cordova-plugin-compat в вашем проекте, который вызывает сбой сборки, поскольку он также содержит эти классы.

Чтобы это исправить, удалите cordova-plugin-compat из своего проекта, чтобы удалить эти файлы Java из проекта платформы cordova-android:

cordova plugin rm cordova-plugin-compat --force

Обновить

Чтобы сохранить это изменение, добавьте [email protected] который включает ограничение движка для предотвращения повторной установки файлов Java на платформу [email protected]+:

cordova plugin add [email protected]

Еще одно обновление (скопировано из комментариев)

После удаления и добавления [email protected] вместо удаления и добавления всей платформы Android вы можете удалить только файлы BuildHelper.java и PermissionHelper.java из папки платформы /android

Ответ 2

Собираюсь добавить мои 2 цента, так как ни одно из решений не работает для меня. Единственное, что сработало для меня:

cordova plugin rm cordova-plugin-compat --force
cordova platform rm android
cordova platform add [email protected]

Ответ 3

Я должен был сделать:

cordova plugin rm cordova-plugin-compat --force
cordova plugin add [email protected]
cordova platform rm android
cordova platform add [email protected]

учитывая, что вы не можете просто удалить cordova-plugin-compat, потому что плагины, такие как cordova-plugin файл, зависят от него.

Ответ 4

Одно решение: cordova android platform @6.2.3

cordova platform remove android && cordova platform add [email protected] $ cordova platform remove android && cordova platform add [email protected]

Ответ 5

Я знаю, что вопрос уже ответил, но я хочу добавить ссылку на официальные заметки о выпуске:

https://cordova.apache.org/news/2017/11/10/plugins-release.html

В нашем последнем выпуске плагинов мы устарели от corova-plugin-compat, так как он интегрирован в [email protected] Итак, для этого цикла выпуска мы удалили зависимость от плагинов, которые полагались на нее, и дали плагинам серьезную версию. В следующих плагинах упали кордова-плагин- совместимый: cordova-plugin-camera, cordova-plugin-contacts, cordova-plugin файл, кордова-плагин-геолокация, кордова-плагин-медиа и кордова-плагин-медиа-захват.

Поэтому убедитесь, что вы обновили все перечисленные плагины до версии, опубликованной в примечаниях к выпуску.

Ответ 6

С моим проектом Ionic 3 этого было достаточно:

ionic cordova plugin rm cordova-plugin-compat --force
ionic cordova plugin add [email protected]

А затем запустите сборку снова. Не нужно удалять и добавлять платформу.

Ответ 7

Я использую для Ionic 3 Project, я должен сделать:

ionic cordova plugin rm cordova-plugin-compat --force
ionic cordova plugin add [email protected]
ionic cordova platform rm android
ionic cordova platform add [email protected]

это работает для меня.

Ответ 8

У меня была такая же ошибка, и у меня не было плагина-совместителя в моих плагинах, я просто запускаю этот код, потом я построил, он работал нормально

$ cordova platform remove android && cordova platform add [email protected]

Ответ 9

плагин cordova rm cordova-plugin-compat --force

Кордоба платформа rm android

платформа cordova добавить [email protected]

Кордоба плагин добавить [email protected]

в этом порядке, работает для меня !! большое спасибо

Ответ 10

Это решение:

cordova plugin rm cordova-plugin-compat --force

Ответ 11

Я подтверждаю, что Ответ от DaveAlden Works!

Но в plugin.xml внутри corova-plugin-compat у меня была синтаксическая ошибка с меньше, чем знак "<", потому что это незаконно в xml.

Эта проблема появляется в visual studio, и вы не можете установить плагин с помощью диспетчера конфигураций, потому что он обнаруживает эту синтаксическую ошибку в xml в ресурсе плагина.

Вы должны установить в командной строке, как говорит DaveAlden.

Игнорировать ошибки, а после установки заменить:

<engine name="cordova-android" version="<6.3.0"/>

от

<engine name="cordova-android" version="&lt;6.3.0"/>

И компиляция работает в конце! :)

Ответ 12

Я удаляю плагин совместимости после обновления зависимости других плагинов; как камера для новой версии, и она работает. Пример: плагин cordova rm cordova-plugin-camera --save плагин cordova добавить кордову-плагин-камеру @последний --save Опубликовать новое дополнение к плагину, старая версия 2.3.0 была заменена на 4.0.2 для камеры.

после этого. Я просто удаляю плагин "Совлокальный" плагин cordova rm cordova-plugin-compat --force

Ответ 13

О возобновлении. Это означает, что плагин-камера несовместима с последней версией android oreo

Ответ 14

Я использую Ionic 4, и это решило это для меня (требуется всего несколько секунд для запуска):

cordova clean

Ответ 15

Там может быть несоответствие плагинов в сборках Android. Так что лучше запустить 2 команды для успешной сборки

cordova platform rm android
cordova platform add android

После потраченных 2 дней это, кажется, только рабочие решения для меня.

Ответ 16

Удалите плагин cordova-plugin-compat принудительно Android SDK выше версии 6.3.0 или равно, потому что он интегрирован с Cordova Android.

кордова плагин рм кордова-плагин-компат --force

Как ссылка ниже

https://cordova.apache.org/announcements/2017/09/27/android-release.html