Несколько файлов 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="<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