Ошибка при слиянии dex Тип программы уже присутствует: android.support.v4.os.ResultReceiver $ MyResultReceiver

Ошибка при объединении dex

Ниже приведены зависимости.

ext {
    anko_version='0.10.5'
    support_lib='1.0.0-alpha1'
    room_lib = "1.1.0"
}
dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    implementation "androidx.cardview:cardview:$support_lib"
    implementation "com.google.android.material:material:$support_lib"
    implementation "androidx.appcompat:appcompat:$support_lib"
    implementation "org.jetbrains.anko:anko:$anko_version"
    implementation "androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1"
    implementation "android.arch.persistence.room:runtime:$room_lib"
    annotationProcessor "android.arch.persistence.room:compiler:$room_lib"
}

ошибка

  • Что пошло не так: выполнение завершилось неудачно для задачи ': app: transformDexArchiveWithExternalLibsDexMergerForDebug'.

    com.android.builder.dexing.DexArchiveMergerException: ошибка при слиянии архивов dex: /app/build/intermediates/transforms/dexBuilder/debug/0.jar, тип программы уже присутствует: android.support.v4.os.ResultReceiver $ 1

Ответы

Ответ 1

Это потому что вы испортили зависимости. Вы должны либо полностью перейти на зависимости AndroidX, либо остаться в библиотеке поддержки. Таким образом, вместо

implementation "android.arch.persistence.room:runtime:$room_lib"
annotationProcessor "android.arch.persistence.room:compiler:$room_lib"

использование

implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"

Также не забудьте проверить gradle.properties проекта gradle.properties на наличие

android.useAndroidX=true
android.enableJetifier=true

Jetifier помогает библиотекам, которые зависят от старых пакетов поддержки, использовать новые пакеты AndroidX.

Что такое Jetifier? Это задача Android Gradle Plugin (теперь также может использоваться как самостоятельный инструмент), которая вызывается на этапе сборки. AGP (> = 3.2.0) автоматически применяет преобразование зависимостей, которое переписывает байт-код и ресурсы зависимостей JAR и AAR (и транзитивных зависимостей) для ссылки на новые классы и артефакты, упакованные в androidx. Вы также можете использовать его как самостоятельный инструмент для индивидуальной миграции библиотеки.

Официальная документация Jetifier

Автономный инструмент Jetifier переносит библиотеки, зависящие от поддержки библиотеки, вместо этого полагаясь на эквивалентные пакеты AndroidX. Этот инструмент позволяет напрямую переносить отдельную библиотеку вместо использования подключаемого модуля Android Gradle, поставляемого в комплекте с Android Studio.

PS Я не проверял, работает ли Anko с зависимостями AndroidX, но если он этого не делает, даже если эти свойства в ваших gradle.properties включены, у вас нет другого выбора, кроме как отказаться от использования библиотек поддержки, как сейчас.

Ответ 2

добавьте следующие строки в gradle.properties

android.useAndroidX=true
android.enableJetifier=true

и измените зависимости вашей комнаты от build.gradle(moudel: app)

implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"

Ответ 3

androidx зависимости зависимостей androidx. И в gradle.properties добавьте строки ниже (если они уже не созданы, создайте файл в корневой папке).

android.useAndroidX=true
android.enableJetifier=true

Надеюсь это поможет.

Ответ 4

У меня такая же проблема.

Не смешивайте стили зависимостей (androidx и com.android.support) в своем проекте.

В своем коде попробуйте заменить

implementation "androidx.appcompat:appcompat:$support_lib"

с

implementation "com.android.support:appcompat-v7:$version_of_support_library"

Полный список миграций зависимостей можно найти здесь.

Я должен использовать зависимость старого стиля, потому что мне нужен WorkManager и согласно официальной документации WorkManager в настоящее время без зависимостей от AndroidX.

Классы WorkManager уже находятся в пакете androidx.work, но в настоящее время зависят от Support Library 27.1 и связанных версий компонентов Arch. Версия WorkManager с зависимостями AndroidX будет выпущена в будущем.

Ответ 5

Для меня это работало с Refactor → Migrate to AndroidX в Android Studio. Это, казалось, разрешало любые вещи, которые я, возможно, пропустил, когда пытаюсь выполнить миграцию AndroidX за один раз за раз. https://developer.android.com/jetpack/androidx/migrate

Ответ 6

Проверьте пакет, который сталкивается с com.android.support и исключает его из этого пакета. Для меня я использовал пакеты androidx, а также FCM, где было столкновение. Итак, это исправлено для меня:

implementation ('com.google.firebase:firebase-core:16.0.4') {
    exclude group: 'com.android.support'
}

Ответ 7

для моего экземпляра я обновил версию "com.github.bumptech.glide: glide: 4.0.0 до реализации" com.github.bumptech.glide: glide: 4.7.1 '

Ответ 8

Для меня работала Refactor → Migrate to AndroidX в Android Studio. Это, казалось, разрешало любые вещи, которые я, возможно, пропустил, когда пытаюсь выполнить миграцию AndroidX за один раз за раз. https://developer.android.com/jetpack/androidx/migrate

Ответ 9

androidx зависимости зависимостей androidx. И в gradle.properties добавьте строки ниже (если они уже не созданы, создайте файл в корневой папке).

android.useAndroidX=true android.enableJetifier=true

Надеюсь это поможет.