Подтвердить что ты не робот

Ошибка преобразования байт-кода в 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, и ничего не изменилось!

Какое может быть другое возможное решение?

4b9b3361

Ответ 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') 

Он будет работать нормально.