首页 文章

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

提问于
浏览
24

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

错误

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

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

8 回答

  • 14

    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

    这是因为你搞砸了依赖关系 . 您必须完全迁移到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 .

    P. S.我没有't test if Anko works with AndroidX dependencies, but if it doesn'即使你的 gradle.properties 中的那些属性已启用,你也没有其他选择,但现在回退到使用支持库 .

  • 1

    我有同样的问题 .

    不要在项目中混合依赖项样式(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包中,但目前依赖于Support Library 27.1和相关的Arch组件版本 . 具有AndroidX依赖关系的WorkManager版本将在未来发布 .

  • 0

    这对我有用的是在Android Studio中重构 - >迁移到AndroidX选项 . 这似乎解决了我在尝试一次执行AndroidX迁移时依赖的任何事情 . https://developer.android.com/jetpack/androidx/migrate

  • 55

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

    android.useAndroidX=true
    android.enableJetifier=true
    

    希望这可以帮助 .

  • 1

    检查与com.android.support冲突的包,并将其从该包中排除 . 对我来说,我使用的是androidx软件包以及FCM,其中存在冲突 . 所以,这对我来说是固定的:

    implementation ('com.google.firebase:firebase-core:16.0.4') {
        exclude group: 'com.android.support'
    }
    
  • 1

    对于我的实例,我已经从实现'com.github.bumptech.glide:glide:4.0.0升级到实现'com.github.bumptech.glide:glide:4.7.1'

  • 0

    对我有用的是Android Studio中的Refactor - > Migrate to AndroidX选项 . 这似乎解决了我在尝试一次执行AndroidX迁移时依赖的任何事情 . https://developer.android.com/jetpack/androidx/migrate

相关问题