You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Dex合并失败,Program type already present冲突问题

解决Android Dex合并失败:Program type already present错误

这个Dex合并错误的核心原因是你的项目同时混用了AndroidX库和旧版Support Library依赖,导致android.support.v4.os.ResultReceiver$1这个类在多个依赖包中重复出现,Dex合并时无法处理重复类。

从你的依赖配置来看,问题出在这几个地方:

  • Anko 0.10.5版本依赖的是旧版Support Library,而你已经在使用AndroidX的androidx.appcompat、androidx.cardview等库;
  • 你用的android.arch.persistence.room是旧版Support Library体系的Room,和AndroidX不兼容;
  • lifecycle-extensions:2.0.0-alpha1也是旧版生命周期库,同样和AndroidX冲突。

下面是具体的解决步骤:

1. 升级依赖到AndroidX兼容版本

首先更新你的版本配置和依赖项,确保所有库都属于AndroidX体系:

ext {
    anko_version='0.11.0'  // 这个版本开始支持AndroidX
    support_lib='1.6.1'    // 改用稳定版的AndroidX库,避免alpha版本的兼容性问题
    room_lib = "2.5.0"     // AndroidX版本的Room
}

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.2.0"  // AndroidX版本的生命周期扩展库
    implementation "androidx.room:room-runtime:$room_lib"           // AndroidX版本的Room运行时
    annotationProcessor "androidx.room:room-compiler:$room_lib"     // AndroidX版本的Room编译器
}

2. 开启AndroidX自动迁移

在项目根目录的gradle.properties文件中添加以下配置,让Jetifier自动转换第三方库的旧版Support依赖为AndroidX:

android.useAndroidX=true
android.enableJetifier=true

Jetifier会帮你处理Anko这类第三方库的依赖转换,不需要手动修改它们的源码。

3. 清理并重建项目

最后,清理项目缓存并重新构建,确保所有依赖都正确同步:

  • 终端执行命令:./gradlew clean
  • 在Android Studio中点击菜单栏的Build -> Rebuild Project

这样操作后,重复类的冲突应该就能解决了。另外建议尽量避免使用alpha版本的库,稳定版的库兼容性和可靠性都会更好。

内容的提问来源于stack exchange,提问作者Anil Ugale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:16:17