Error when merging the dex
following are the dependencies.
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"
}
error
- What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: /app/build/intermediates/transforms/dexBuilder/debug/0.jar,
Program type already present: android.support.v4.os.ResultReceiver$1
It's because you messed up the dependencies. You have to either fully migrate to AndroidX dependencies or stay on Support library ones. Thus,
instead of
implementation "android.arch.persistence.room:runtime:$room_lib"
annotationProcessor "android.arch.persistence.room:compiler:$room_lib"
use
implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"
Also be sure to check your gradle.properties
project file to contain
android.useAndroidX=true
android.enableJetifier=true
Jetifier helps libraries, which depend on old Support packages, to use the new AndroidX ones.
P. S. I didn't test if Anko works with AndroidX dependencies, but if it doesn't even though those properties in your gradle.properties
are enabled, you have no other choices, but fallback to using Support libraries as for now.
add following lines on gradle.properties
android.useAndroidX=true
android.enableJetifier=true
and change your room dependencies on build.gradle(moudel:app)
implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"
Migrate the dependencies to androidx
dependencies. And in gradle.properties
add the below lines (If not created already, create the file in root folder).
android.useAndroidX=true
android.enableJetifier=true
Hope this helps.
I had the same problem.
Do not mix dependencies styles(androidx and com.android.support) in your project.
In your code try to replace
implementation "androidx.appcompat:appcompat:$support_lib"
with
implementation "com.android.support:appcompat-v7:$version_of_support_library"
A full list of dependencies migration you can find here .
I should use old style dependency because I needed WorkManager and according to official documentation WorkManager currently without AndroidX dependencies.
WorkManager classes are already in the androidx.work package, but
currently depend on Support Library 27.1, and associated Arch
component versions. Version of WorkManager with AndroidX dependencies
will be released in the future.
This is what worked for me was Refactor -> Migrate to AndroidX option in Android Studio. This seemed to resolve any things I may have missed when trying to do the AndroidX migration one dependency at a time.
https://developer.android.com/jetpack/androidx/migrate
Check the package which clashes with the com.android.support and exclude it
from that package. For me, I was using androidx packages and also FCM, where
there was a clash. So, this fixed for me:
implementation ('com.google.firebase:firebase-core:16.0.4') {
exclude group: 'com.android.support'
}
for my instance i had upgraded from
implementation 'com.github.bumptech.glide:glide:4.0.0
to
implementation 'com.github.bumptech.glide:glide:4.7.1'
What worked for me was Refactor -> Migrate to AndroidX option in Android Studio. This seemed to resolve any things I may have missed when trying to do the AndroidX migration one dependency at a time.
https://developer.android.com/jetpack/androidx/migrate