合并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"
}
错误
com.android.builder.dexing.DexArchiveMergerException:合并dex存档时出错:/app/build/intermediates/transforms/dexBuilder/debug/0.jar, 程序类型已存在:android.support.v4.os.ResultReceiver $ 1
答案 0 :(得分:87)
这是因为你搞砸了依赖关系。您必须完全迁移到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
项目文件是否包含
android.useAndroidX=true
android.enableJetifier=true
Jetifier帮助依赖旧支持包的图书馆使用新的AndroidX。
什么是Jetifier? 它是一个Android Gradle Plugin任务(现在也可以用作独立工具),在构建阶段调用它。 AGP(> = 3.2.0)自动应用依赖性转换,其重写JAR和AAR依赖性(和传递依赖性)的字节码和资源以引用新的androidx打包的类和工件。 您还可以将其用作单独迁移库的独立工具。
Jetifier Official Documentation
独立的Jetifier工具迁移支持库依赖库,而不是依赖于等效的AndroidX软件包。该工具允许您直接迁移单个库,而不是使用与Android Studio捆绑在一起的Android gradle插件。
P上。 S.我没有测试Anko是否与AndroidX依赖关系一起工作,但即使启用了gradle.properties
中的那些属性,它也没有其他选择,但是回退到使用支持库至于现在。
答案 1 :(得分:18)
在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"
答案 2 :(得分:9)
将依赖关系迁移到androidx
依赖关系。然后在gradle.properties
中添加以下几行(如果尚未创建,请在根文件夹中创建文件)。
android.useAndroidX=true
android.enableJetifier=true
希望这会有所帮助。
答案 3 :(得分:4)
这对我有用的是Refactor->在Android Studio中迁移到AndroidX选项。这似乎可以解决我每次尝试一次依赖一个AndroidX迁移时可能错过的任何事情。 https://developer.android.com/jetpack/androidx/migrate
答案 4 :(得分:2)
我遇到了同样的问题。
不要在项目中混合依赖项样式(androidx和com.android.support)。
在您的代码中尝试替换
implementation "androidx.appcompat:appcompat:$support_lib"
带
implementation "com.android.support:appcompat-v7:$version_of_support_library"
您可以找到here的完整依赖项迁移列表。
我应该使用旧式依赖项,因为我需要WorkManager并且根据官方文档,WorkManager目前没有AndroidX依赖项。
WorkManager类已经在androidx.work包中,但是 目前依赖于支持库27.1和相关的Arch 组件版本。具有AndroidX依赖关系的WorkManager版本 将在未来发布。
答案 5 :(得分:2)
对我有用的是Refactor->迁移到Android Studio中的AndroidX选项。这似乎可以解决我每次尝试一次依赖一个AndroidX迁移时可能错过的任何事情。 https://developer.android.com/jetpack/androidx/migrate
答案 6 :(得分:2)
检查与com.android.support冲突的软件包并将其排除 从那个包。对我来说,我使用的是androidx软件包以及FCM,其中 发生了冲突。所以,这对我来说是固定的:
implementation ('com.google.firebase:firebase-core:16.0.4') {
exclude group: 'com.android.support'
}
答案 7 :(得分:2)
添加以下插件
ionic cordova plugin add cordova-plugin-androidx
ionic cordova plugin add cordova-plugin-androidx-adapter
在platforms / android / gradle.properties文件中添加这两行
android.useAndroidX=true
android.enableJetifier=true
这里还有一个视频: https://youtu.be/0RaJlGipYHc
答案 8 :(得分:0)
对于我已升级的实例 实施' com.github.bumptech.glide:glide:4.0.0 至 实施' com.github.bumptech.glide:glide:4.7.1'