Ошибка Dex на Android Studio 3.0 Beta4
Error:java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:com.android.dex.DexException: Multiple dex files define Lcom/google/zxing/integration/android/IntentResult;
16 ответов
У меня та же проблема с Android Studio 3.0 beta 4. Я нашел решение.
1. Из Build
меню нажмите Clean Project
кнопка.
2. После завершения задания нажмите Rebuild Project
кнопка от Build
меню.
Для Android Studio 3.0 я добавил следующее:
multiDexEnabled true
И это сработало!
пример
android {
compileSdkVersion 25
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.xx.xxx"
minSdkVersion 15
targetSdkVersion 24
versionCode 9
versionName "1.0"
multiDexEnabled true //Add this
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
Поэтому я решил эту проблему, выполнив следующие действия:
- Удалить
./gradle
папка внутри вашего проекта - Удалите все папки сборки и кеш-память. Я выполнил следующую команду:
Как?
cd ~/[your project root folder] && find . -name build -exec rm -rf {} \; && rm -rf $HOME/.gradle/caches/
Предполагая, что ваши файлы конфигурации gradle находятся в $HOME/.gradle
папка.
- Внутри Android Studio, пошел в
File > Invalidate caches / Restart...
и сделал недействительными кэши и перезапустил его.
Вы должны быть в состоянии найти причину этой ошибки, проверив ваши зависимости с помощью gradle и найдя дубликаты: ./gradlew -q app:dependencies
В моем случае во время сборки произошла следующая ошибка:
Duplicate zip entry [httpcore-4.4.1.jar
и это было решено, сделав это в моем build.gradle
:
implementation ('me.dlkanth:stetho-volley:1.0') {
exclude group: 'org.apache.httpcomponents'
}
Если ваш minSdkVersion 21 или выше
android {
defaultConfig {
multiDexEnabled true
}
}
если ваш minSdkVersion равен 20 или ниже
1) вы должны добавить следующую библиотеку в зависимости
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
2) Создайте класс Java, затем расширьте его из приложения и переопределите метод attachBaseContext.
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
3) Упомяните созданный класс внутри манифеста в теге приложения.
<application
android:name=".MyApplication"
.
.
.
</application>
Проверяйте свои зависимости на наличие последней версии, обычно это не соответствует версии какой-либо из ваших зависимостей.
1.Build> Clean Project 2. Перестройте свой проект
Проверьте подробный журнал на наличие зависимости, вызывающей проблему слияния, и обновите ее. Повторите то же самое для каждой зависимости.
Я столкнулся с той же проблемой в Android Studio 3.0.1, я перепробовал все возможные случаи, но у меня ничего не получалось, как указано выше, в конце концов я решил ее
Solution1:
- Закрыть Android Studio
- удалять
.gradle
папка расположена вC:\Users\YourComputerName\.gradle
не из приложения.gradle
- Перезапустите андроид студию
Он скачает все необходимые банки и добавит в ваш путь сборки
Solution2:
- Удалить дубликат jar из папки libs в app/libs
- Снова запустите приложение
Потому что, если есть дубликат файла JAR, который уже определен в build.gradle
файл это вызывает проблему.
Это решило проблему для меня. Это может помочь другим..
Эта ошибка может иметь несколько причин. Никакая чистка и перестройка или что-либо подобное не сделали работу для меня.
Для меня проблемой была зависимость:
compile 'org.jetbrains:annotations-java5:15.0'
Я удалил его, и все работало нормально.
Измените "compile" на "compileOnly", это то, что сработало для меня.
Я использую Android Studio 3.0.1, сборка #AI-171.4443003, построена 9 ноября 2017 г.
Я удаляю файл jar из папки libs. И это прекрасно работает для меня
В моем случае виновником была библиотека SendGrid, добавила это, и это было исправлено:
compile 'com.github.danysantiago:sendgrid-android:1',{
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
Я использую выпуск Studio 3.0.0. В моем случае было единственное решение: я удалил старые JAR-файлы из папки "libs" в моем проекте: это был пакет "ksoap2" с зависимостями. Пакеты, полученные с помощью gradle, обычно не конфликтуют друг с другом, по крайней мере, если вы используете самые популярные из них. Но старый JAR в папке libs может разрушить вашу сборку, если он включает все собственные зависимости.
Я использую Android Studio 3.0.1 и столкнулся с той же проблемой. Если ответ других не работает, попробуйте это:
Сервис -> Android -> Синхронизировать проект с файлами Gradle
У меня сработало Sync Project с Gradle Files
Я пробовал другие комментарии от удаления Gradle и Bla Bla Bla, но добавив multiDexEnabled true
Решая мою проблему, я выясняю, что мой apk достиг более 64K метода.
Ссылка: https://developer.android.com/studio/build/multidex.html)
Иногда это может происходить из-за того, что одна и та же библиотека (jar-файл) присутствует два раза или ваш проект достиг ограничения в 64 КБ.
Решение: 1) Удалите привязку данных, если ваш проект использует это 2) Удалите ту же библиотеку типов из папки lib или удалите файл.gradle из c//user//your_pc//. Gradle 3) примените это в вашем build.gradle
android {
defaultConfig {
multiDexEnabled true
}
}
Решил это, удалив библиотеку Android Data Binding:
dataBinding {
enabled = true
}