合并dex程序类型时出错:android.support.v4.os.ResultReceiver $ MyResultReceiver

Ani*_*ale 45 android android-support-library android-gradle-plugin

合并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"
}
Run Code Online (Sandbox Code Playgroud)

错误

  • 出了什么问题:任务执行失败':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

    com.android.builder.dexing.DexArchiveMergerException:合并dex存档时出错:/app/build/intermediates/transforms/dexBuilder/debug/0.jar,程序类型已存在:android.support.v4.os.ResultReceiver $ 1

art*_*est 91

这是因为你搞砸了依赖关系.您必须完全迁移到AndroidX依赖项或继续使用支持库.因此,而不是

implementation "android.arch.persistence.room:runtime:$room_lib"
annotationProcessor "android.arch.persistence.room:compiler:$room_lib"
Run Code Online (Sandbox Code Playgroud)

使用

implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"
Run Code Online (Sandbox Code Playgroud)

另外一定要检查gradle.properties要包含的项目文件

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

Jetifier帮助依赖旧支持包的库使用新的AndroidX.

什么是Jetifier?这是一个Android Gradle Plugin任务(现在也可以用作独立工具),在构建阶段调用它.AGP(> = 3.2.0)会自动应用依赖项转换,它会重写JAR和AAR依赖项(以及传递依赖项)的字节码和资源,以引用新的androidx打包的类和工件.您还可以将其用作单独迁移库的独立工具.

Jetifier官方文件

独立的Jetifier工具迁移了支持库依赖库,而不是依赖于等效的AndroidX软件包.该工具允许您直接迁移单个库,而不是使用与Android Studio捆绑在一起的Android gradle插件.

PS我没有测试Anko是否与AndroidX依赖关系一起工作,但是如果它没有gradle.properties启用你的那些属性,你没有其他选择,但现在回退到使用支持库.

  • 感谢您的帮助,我错过了gradle.properties设置 (2认同)

Aun*_*win 18

添加以下行 gradle.properties

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

并在build.gradle(moudel:app)上更改您的房间依赖项

implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"
Run Code Online (Sandbox Code Playgroud)


Nav*_*T P 8

将依赖项迁移到androidx依赖项.并gradle.properties添加以下行(如果尚未创建,则在根文件夹中创建文件).

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.