Ошибка преобразования байт-кода в dex: Причина: java.lang.RuntimeException: Исключительные классы разбора - Android studio 2.0 beta 6
Я обновил последнюю версию Android Studio Beta 6 с помощью gradle:
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0-beta6'
}
Приложение отлично работает на эмуляторе и устройствах, которые я тестировал, и он отлично работает.
У меня появилось много ошибок, только когда я пытаюсь создать подписи APK,
Я получил некоторые ошибки в зависимостях, все они были решены, когда я исключил векторную векторную анимацию, анимированную анимацию и библиотеку Support-v4
Теперь у меня нет ошибок зависимостей.
теперь мой gradle.build для модуля приложения выглядит следующим образом:
apply plugin: 'com.android.application'
android {
configurations {
//all*.exclude group: 'com.android.support', module: 'support-v4'
all*.exclude module: 'animated-vector-drawable'
all*.exclude module: 'support-vector-drawable'
//all*.exclude module: 'support-v4'
}
repositories {
maven { url "https://jitpack.io" }
}
compileSdkVersion 23
buildToolsVersion '23.0.2'
defaultConfig {
applicationId "com.test.test"
minSdkVersion 11
targetSdkVersion 23
versionCode 1
versionName "1"
// multiDexEnabled true
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile('com.github.afollestad.material-dialogs:commons:[email protected]') {
transitive = true
exclude module: 'support-v4'
exclude module: 'appcompat-v7'
exclude module: 'recyclerview-v7'
}
compile('com.google.android.gms:play-services-ads:8.4.0') {
exclude module: 'support-v4'
}
compile('com.google.android.gms:play-services-analytics:8.4.0') {
exclude module: 'support-v4'
}
compile('com.android.support:appcompat-v7:23.2.0') {
exclude module: 'support-v4'
exclude module: 'animated-vector-drawable'
exclude module: 'support-vector-drawable'
}
compile('com.android.support:support-v4:23.2.0') {
exclude module: 'animated-vector-drawable'
exclude module: 'support-vector-drawable'
}
compile('com.android.support:palette-v7:23.2.0') {
exclude module: 'support-v4'
}
compile('com.android.support:cardview-v7:23.2.0') {
exclude module: 'support-v4'
}
compile('com.android.support:recyclerview-v7:23.2.0') {
exclude module: 'support-v4'
}
compile('com.android.support:design:23.2.0') {
exclude module: 'support-v4'
}
compile('com.nineoldandroids:library:2.4.0') {
exclude module: 'support-v4'
}
compile('com.baoyz.swipemenulistview:library:1.2.1') {
exclude module: 'support-v4'
exclude module: 'appcompat-v7'
exclude module: 'recyclerview-v7'
}
compile('com.squareup.picasso:picasso:2.5.2') {
exclude module: 'support-v4'
}
compile('com.nononsenseapps:filepicker:2.5.0') {
exclude module: 'support-v4'
exclude module: 'appcompat-v7'
exclude module: 'recyclerview-v7'
}
compile 'com.google.code.gson:gson:2.6.1'
}
Ошибки появляются только при создании для выпуска:
Это ошибка при включении multiDex:
Error:Execution failed for task ':app:transformClassesWithMultidexlistForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
И это ошибка, когда я отключу ее:
:app:transformClassesWithDexForRelease
Error:Error converting bytecode to dex:
Cause: java.lang.RuntimeException: Exception parsing classes
Error:Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
Я попытался изменить buildToolsVersion '23.0.2'
на все возможные версии и ничего не изменилось.
когда я поставил версию 22.0.1, я получил эту ошибку:
Error:Error converting bytecode to dex:
Cause: com.android.dx.cf.iface.ParseException: name already added: string{"a"}
Error:Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
Я пробовал со всеми возможными версиями поддерживаемых библиотек и тем же результатом.
Я пробовал с Java 1.6 и 1.7, и ничего не изменилось!
Какое может быть другое возможное решение?
Ответы
Ответ 1
Я также столкнулся с той же ошибкой, и я просматривал множество существующих ответов с дублирующимися зависимостями или multidex и т.д., но никто не работал. (Android studio 2.0 Beta 6, Build tools 23.0.2, no multidex)
Оказалось, что я однажды использовал имена пакетов, которые не совпадали с именем пакета, которое изображено в манифесте.
В других строках ParseException я обнаружил, что у меня были файлы в разных модулях с похожими именами/путями пакетов, которые, возможно, конфликтуют с dexer.
Пример:
Модуль A: com.example.xyz.ticketing.modulea.Interface.java
Модуль B: com.example.Xyz.ticketing.moduleb.Enumerations.java
Модуль C: имеет зависимости от A и B
После фиксации "Xyz" в нижнем регистре, dexer снова стал прекрасным.
Как узнать:
Когда я просмотрел вывод консоли gradle для ParseExceptions, который выглядит следующим образом:
AGPBI: { "kind": "error", "text": "Ошибка преобразования байт-кода в dex:\nCause: java.lang.RuntimeException: Исключение разбор классов"
Я прокручивался ближе к концу исключения. В этой длинной строке исключений есть часть, которая фактически упоминает причину:
Вызвано: com.android.dx.cf.iface.ParseException: имя класса (at/dummycompany/mFGM/hata/hwp/BuildConfig) не соответствует пути (at/dummycompany/mfgm/hata/hwp/BuildConfig. класс)
Таким образом, я узнал, где искать пропущенные имена пакетов/пути
Ответ 2
У меня такая же проблема, и я просто делаю Build > Clean Project
Подождите окончания очистки, а затем Build > Rebuild Project
, и ошибка исчезла. это.
Ответ 3
Решение для меня заключается в модификации файла Build Gradle.
Я узнал, что проблема - это накладные расходы на GC (из памяти).
Итак, я добавляю код в свою конфигурацию
android {
dexOptions {
incremental = true;
preDexLibraries = false
javaMaxHeapSize "2g"
}
}
Есть еще одна проблема с proguard.
Вы также должны установить minifyEnabled на false.
Ответ 4
У меня было неправильное имя пакета в одном из вспомогательного класса, поэтому у меня была ошибка. Поэтому проверьте все классы и убедитесь, что у вас есть правильное имя пакета.
Ответ 5
Мое решение было другим, я добавил эти строки в proguard-rules.pro
-optimizationpasses 5
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
Обязательно обновите все из менеджера SDK.
Ответ 6
Удаление -overloadaggressively
из моего proguard-rules.pro
исправлено для меня.
В качестве альтернативы добавление -useuniqueclassmembernames
также фиксировало его.
Ответ 7
Если ваша targetSdkVersion имеет версию 25 или более поздней версии и вы используете JDK 8, вам необходимо добавить в файл build.gradle следующее:
android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Дополнительная информация: fooobar.com/questions/80874/...
Ответ 8
Я попробовал ./gradlew clean build
, недействительный кеш студии, перезагрузив компьютер. Но то, что решило проблему, - это поворот Instant off off
Ответ 9
Получите эту проблему при использовании шаблона для студии Android для входа в систему.
Я выбрал пакет "activity", чтобы включить свою деятельность.
Шаблон в AndroidManifest.xml, вместо .activity.LoginActivity
использовал .LoginActivity
, что вызвало ошибку.
Ответ 10
Если вы столкнулись с этой ошибкой, ваш пакет в манифесте будет отличаться от других, которые вы установили в своих классах. будьте осторожны.
Ответ 11
Сегодня я столкнулся с той же проблемой, и проблема заключалась в том, что в моем классе Constants.java я определил (по ошибке)
public static final class Checkout {
.......
}
и
public static final class CHECKOUT {
......
}
Ответ 12
В моем случае был класс, который я сделал, которого я еще не использовал. Поэтому мне нужно удалить класс или использовать класс.
Ответ 13
Я столкнулся с той же ошибкой. Похоже, что из-за переименования пакета в нижний регистр и класс был предыдущий вариант.
Ответ 14
Ваш файл gradle.build будет содержать
compile files('libs/httpclient-4.2.1.jar')
compile 'org.apache.httpcomponents:httpclient:4.5'
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
Удалив эту строку из файла.
compile files('libs/httpclient-4.2.1.jar')
Он будет работать нормально.