web-dev-qa-db-fra.com

Erreur lors de la fusion du type de programme dex déjà présent: Android.support.v4.os.ResultReceiver $ MyResultReceiver

Erreur lors de la fusion du dex

voici les dépendances.

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"
}

erreur

  • Ce qui s'est mal passé: L'exécution a échoué pour la tâche ': app: transformDexArchiveWithExternalLibsDexMergerForDebug'.

    com.Android.builder.dexing.DexArchiveMergerException: erreur lors de la fusion des archives dex: /app/build/intermediates/transforms/dexBuilder/debug/0.jar, type de programme déjà présent: Android.support.v4.os.ResultReceiver $ 1

43
Anil Ugale

C'est parce que vous avez foiré les dépendances. Vous devez migrer entièrement vers les dépendances AndroidX ou rester sur celles de la bibliothèque de support. Ainsi, au lieu de

implementation "Android.Arch.persistence.room:runtime:$room_lib"
annotationProcessor "Android.Arch.persistence.room:compiler:$room_lib"

utilisation

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

Veillez également à vérifier que votre fichier de projet gradle.properties contient

Android.useAndroidX=true
Android.enableJetifier=true

Jetifier aide les bibliothèques, qui dépendent d'anciens packages de support, à utiliser les nouveaux AndroidX.

Qu'est-ce que Jetifier? Il s’agit d’une tâche Android Gradle Plugin (qui peut maintenant aussi être utilisée en tant qu’outil autonome) qui est appelée pendant la phase de construction. AGP (> = 3.2.0) applique automatiquement une traduction de dépendance qui réécrit le code octet et les ressources des dépendances JAR et AAR (et des dépendances transitives) afin de référencer les nouvelles classes et artefacts fournis par androidx. Vous pouvez également l'utiliser comme outil autonome pour migrer individuellement une bibliothèque.

Documentation officielle de Jetifier

L'outil autonome Jetifier migre les bibliothèques dépendantes de la bibliothèque de support pour qu'elles s'appuient sur les packages AndroidX équivalents. L'outil vous permet de migrer directement une bibliothèque individuelle, au lieu d'utiliser le plug-in Android gradle fourni avec Android Studio.

P. S. Je n'ai pas vérifié si Anko fonctionnait avec les dépendances d'AndroidX, mais s'il ne le fait pas même si ces propriétés de votre gradle.properties sont activées, vous n'avez pas d'autre choix que de recourir aux bibliothèques de support pour le moment.

89
Skyfall100

ajouter les lignes suivantes sur gradle.properties

Android.useAndroidX=true
Android.enableJetifier=true

et changez les dépendances de votre pièce sur build.gradle (moudel: app)

implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"
18
Aung Myo Lwin

Migrez les dépendances vers androidx dépendances. Et dans gradle.properties ajoutez les lignes ci-dessous (si elles ne sont pas déjà créées, créez le fichier dans le dossier racine).

Android.useAndroidX=true
Android.enableJetifier=true

J'espère que cela t'aides.

8
Naveen T P

C’est ce qui a bien fonctionné pour moi, c’était l’option Refactor -> Migration vers AndroidX dans Android Studio. Cela semblait résoudre tout ce que j'avais peut-être oublié en essayant de faire la migration d'AndroidX une dépendance à la fois. https://developer.Android.com/jetpack/androidx/migrate

3
toobsco42

Vérifiez le package en conflit avec com.Android.support et excluez-le de ce package. Pour moi, j'utilisais des packages androidx ainsi que FCM, en cas de conflit. Donc, cela a corrigé pour moi:

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

J'ai eu le même problème.

Ne mélangez pas les styles de dépendances (androidx et com.Android.support) dans votre projet.

Dans votre code, essayez de remplacer

implementation "androidx.appcompat:appcompat:$support_lib"

avec

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

Une liste complète des migrations de dépendances que vous pouvez trouver ici .

Je devrais utiliser une dépendance de style ancien car j'avais besoin de WorkManager et, conformément à la documentation officielle, WorkManager actuellement dépourvu de dépendances AndroidX.

Les classes WorkManager figurent déjà dans le package androidx.work, mais dépendent actuellement de Support Library 27.1 et des versions de composant Arch associées. Une version de WorkManager avec des dépendances AndroidX sera publiée ultérieurement.

2
mtwain

Ce qui a fonctionné pour moi, c’est que Refactor -> Option de migration vers AndroidX dans Android Studio. Cela semblait résoudre tout ce que j'avais peut-être oublié en essayant de faire la migration d'AndroidX une dépendance à la fois. https://developer.Android.com/jetpack/androidx/migrate

2
toobsco42

pour mon cas, je suis passé de l'implémentation 'com.github.bumptech.glide: glide: 4.0.0 à l'implémentation' com.github.bumptech.glide: glide: 4.7.1 '

0
Mbanda