问题描述
合并dex时出错
以下是依赖项.
ext {anko_version='0.10.5'support_lib='1.0.0-alpha1'room_lib = "1.1.0"}依赖{实施org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"实现androidx.cardview:cardview:$support_lib"实施com.google.android.material:material:$support_lib"实现androidx.appcompat:appcompat:$support_lib"实施org.jetbrains.anko:anko:$anko_version"实现androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1"实现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
这是因为你搞砸了依赖关系.您必须要么完全迁移到 AndroidX 依赖项,要么继续使用支持库的依赖项.因此,而不是
实现android.arch.persistence.room:runtime:$room_lib"annotationProcessor "android.arch.persistence.room:compiler:$room_lib"使用
实现androidx.room:room-runtime:2.0.0-alpha1"annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"另外一定要检查你的 gradle.properties 项目文件是否包含
android.useAndroidX=trueandroid.enableJetifier=trueJetifier 帮助依赖旧支持包的库使用新的 AndroidX 包.
什么是喷射器?这是一个在构建阶段调用的 Android Gradle 插件任务(现在也可以用作独立工具).AGP (>= 3.2.0) 会自动应用依赖转换,它会重写字节码和 JAR 和 AAR 依赖(以及传递依赖)的资源,以引用新的 androidx 打包类和工件.您还可以将其用作独立工具来单独迁移库.
Jetifier 官方文档
<块引用>独立的 Jetifier 工具将依赖于支持库的库迁移为依赖等效的 AndroidX 包.该工具可让您直接迁移单个库,而不是使用与 Android Studio 捆绑的 Android gradle 插件.
P.S. 我没有测试 Anko 是否适用于 AndroidX 依赖项,但如果即使启用了 gradle.properties 中的那些属性也不能,你别无选择,只能回退到使用 Support图书馆和现在一样.
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.
What is Jetifier? It's an Android Gradle Plugin task (now can also be used as a standalone tool) which is invoked during build phase. AGP (>= 3.2.0) does automatically apply dependency translation which rewrites bytecode and resources of JAR and AAR dependencies (and transitive dependencies) to reference the new androidx-packaged classes and artifacts. You can also use it as a standalone tool to individually migrate a library.
Jetifier Official Documentation
The standalone Jetifier tool migrates support-library-dependent libraries to rely on the equivalent AndroidX packages instead. The tool lets you migrate an individual library directly, instead of using the Android gradle plugin bundled with Android Studio.
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.
这篇关于合并 dex 程序类型已存在时出错:android.support.v4.os.ResultReceiver$MyResultReceiver的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)