Ответ 1
Для проекта, основанного на Cordova, запустите cordova clean android
перед сборкой снова, как предложено @mkimmet.
Android Studio получала ошибку сборки при выполнении сборки:
Ошибка: не удалось выполнить задачу ': app: transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Невозможно объединить dex "
Мое приложение: файл build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.pdroid.foodieschoice"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.firebaseui:firebase-ui-auth:2.3.0'
testCompile 'junit:junit:4.12'
}
configurations.all {
resolutionStrategy {
force 'com.android.support:appcompat-v7:26.0.1'
force 'com.android.support:support-compat:26.0.1'
force 'com.android.support:support-core-ui:26.0.1'
force 'com.android.support:support-annotations:26.0.1'
force 'com.android.support:recyclerview-v7:26.0.1'
}
}
apply plugin: 'com.google.gms.google-services'
любые решения
Изменение: я сделал с образцом через сайт GitHub Firebase и решил
Для проекта, основанного на Cordova, запустите cordova clean android
перед сборкой снова, как предложено @mkimmet.
Эта ошибка возникает, когда вы добавляете внешнюю библиотеку, которая может быть несовместима с вашим compileSdkVersion
.
Будьте осторожны при добавлении external library
.
Я потратил 2 дня на эту проблему, и, наконец, она была решена после этих шагов.
Убедитесь, что все ваши библиотеки поддержки совпадают с compileSdkVersion
вашего build.gradle(Module:app)
в моем случае это 26
.
В вашей категории по умолчанию Config введите multiDexEnabled true. Это важная часть.
Перейти к файлу | Настройки | Сборка, выполнение, развертывание | Мгновенный запуск и попробуйте включить/отключить мгновенный запуск для горячей замены... и нажмите кнопку ОК
Sync
ваш проект.
Наконец, Перейти к Build | нажмите на Перестроить проект.
Примечание. Rebuild Project сначала очищает, а затем создает проект.
Попробуйте добавить это в gradle
android {
defaultConfig {
multiDexEnabled true
}
}
Просто попробуйте сделать "Build → Clean Project". Это решило проблему для меня.
Обратитесь по этой ссылке: поскольку существуют различные варианты отключения предупреждения в зависимости от minSdkVersion, оно установлено ниже 20:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
... }
dependencies { compile 'com.android.support:multidex:1.0.3' }
Если в вашем наборе build.gradle значение minSdkVersion больше 20, используйте следующее, чтобы отключить предупреждение:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
... }
Обновите зависимости следующим образом:
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
Опять же, единственное отличие - это ключевые слова в зависимостях:
minSdkVersion ниже 20: использовать компиляцию
minSdkVersion выше 20: использовать реализацию
Для меня добавление
multiDexEnabled true
и
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/notice'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license'
exclude 'META-INF/license.txt'
}
на уровне приложения Файл Build.gradle решил проблему
Я пробовал много решений, как упомянуто выше, включая multiDexEnabled true, но ничего из этого не помогло мне.
Вот решение, которое сработало для меня - скопируйте этот код в файл app\build.gradle
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support' && requested.name != 'multidex') {
details.useVersion "${rootProject.ext.supportLibVersion}"
}
}
}
Обязательно запустите gradlew clean перед запуском кода
То же самое случилось со мной, выяснилось, что я был в середине обновления до AS 3.0.1, и после того, как я сделал обновление, очистил и перестроил приложение, все было исправлено.
Для меня то, что исправило эту ошибку, меняло одну строку в зависимости моего приложения от gradle.
из этого:
compile('com.google.android.gms:play-services-gcm:+') {
force = true
}
На это:
compile('com.google.android.gms:play-services-gcm:11.8.0') {
force = true
}
Используйте multiDexEnabled true, как показано ниже.
{
minSdkVersion 17
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
а также
implementation 'com.android.support:multidex:1.0.3'
это решение сработало для меня.
Также убедитесь, что ваше приложение имеет подклассы MultiDexApplication
import android.support.multidex.MultiDexApplication
class App : MultiDexApplication()
или, если нет подкласса класса приложения, добавьте в AndroidManifest.xml
<application
android:name="android.support.multidex.MultiDexApplication"
Вы находитесь между обновлениями SDK или платформы? Если да, заполните их полностью, а затем попытайтесь продолжить. Обычно я обновляю отдельные пакеты, которые необходимо обновить, чтобы получить все обновление, которое иногда может подниматься до 2,5 ГБ. Выполнение этого полного обновления иногда терпит неудачу. После обновления до Android Studio 3.0 у меня было несколько обновлений SDK, и эта ошибка была выше, поскольку все пакеты не обновлялись. Как только я обновил все пакеты, вышеуказанная ошибка исчезла.
В моем случае изменение версии библиотеки firebase от 2.6.0 до 2.4.2 исправило проблему
Для меня проблема заключалась в использовании Java 1.8 в модуле, но не в модуле приложения. Я добавил это в приложение build gradle и работал:
android{
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Такая же проблема. Я включил multidex: defaultConfig { applicationId "xxx.xxx.xxxx" minSdkVersion 24 targetSdkVersion 26 multiDexEnabled true
Я очистил кеш, запустил gradle clean, rebuild, make, попытался убедиться в отсутствии конфликтов в импортированных библиотеках (удалены все транзитивные зависимости) и сделал все обновления. Тем не менее:
Ошибка: выполнение выполнено для задачи ': app: transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: невозможно слить dex
Выключает сборку не понравилось: реализация 'org.slf4j: slf4j-android: 1.7.21'
Когда версия Android Studio 3.0.1, Gradle Версия 4.1 и Android PluginVersion 3.0.0, она столкнется с этой проблемой. Затем я понижаю версию Gradle версии 3,3, Android Android равна нулю, такой проблемы нет.
У меня было это, когда запрошенная версия SDK не соответствовала зависимостям. Вы можете щелкнуть выделенную линию и исправить это, нажав красную лампочку. Не нужно находить фактическую версию, просто дайте IDE понять это для вас. И добавьте google repo в конфигурацию maven.
Я получал ту же ошибку, и в моем случае ошибка была устранена, когда я исправил ошибку сборки, которая была связана с вариантом сборки, отличным от того, который я собирал в данный момент.
Я строил вариант сборки, на который смотрел просто отлично, без ошибок, но попытка отладки вызвала app:transformDexArchiveWithExternalLibsDexMergerForDebug
ошибка app:transformDexArchiveWithExternalLibsDexMergerForDebug
. Как только я переключился на сборку другого варианта сборки, я поймал свою ошибку в процессе сборки и исправил ее. Похоже, это решило мое app:transformDexArchiveWithExternalLibsDexMergerForDebug
проблема app:transformDexArchiveWithExternalLibsDexMergerForDebug
для всех вариантов сборки.
Обратите внимание, что эта ошибка была не в указанном внешнем модуле, а в отдельном исходном наборе варианта сборки, который ссылался на внешний модуль. Надеюсь, что это полезно для тех, кто может видеть тот же случай, что и я!
Я сделал и исправил эту проблему, просто выполнив эту работу в моем коде
Открыть → build.gradle Изменить значение с
compile 'com.google.code.gson:gson:2.6.1'
в
compile 'com.google.code.gson:gson:2.8.2'
Чтобы устранить эту проблему Dex, просто внедрите одну зависимость. Эта проблема возникает, когда мы используем несколько разных сервисов с одного сервера. Предположим, мы используем рекламу и Firestore в проекте, и у обоих есть хранилище maven. поэтому нам нужно вызывать разные данные в репозитории, для реализации которых нам нужна зависимость dex. Новое обновление Зависимости: -
implementation 'com.android.support:multidex:1.0.3'
Я уверен, что это решит вашу проблему навсегда
1)Please add multiDexEnabled true 2)if you get compilation error then check your app level build.gradle weather same dependencies are implemented with different versions. 3)Remove one if you find same dependencies.
android {compileSdkVersion 28 defaultConfig {
minSdkVersion 17
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
hope it works fine :) Happy Coding
Самый простой способ избежать ошибки типа suck - это:
-Change библиотека комбинирует dkversion так же, как и ваше приложение compilesdkversion
-Change библиотека поддерживает версию библиотеки, такую же, как и ваш build.gradle (приложение)
Это то, что работает для меня. Чисто подготовить и запустить.
cordova clean android;
ionic cordova prepare andriod;
ionic cordova run andriod;
Надеюсь, поможет.
Перейдите в файл уровня модуля build.gradle
и добавьте следующие строки в код
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 28
multiDexEnabled true
}
...
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
Это легко решило проблему. Проверьте эту документацию