Duplicate class android.support.design.widget.CoordinatorLayout found in modules

Duplicate class android.support.design.widget.CoordinatorLayout found in modules classes.jar (com.android.support:coordinatorlayout:28.0.0) and classes.jar (com.android.support:design:25.3.1)。

新建项目时引入了一个状态栏显示框架,结果项目运行时就报了如上的错误,一开始也是一直在找重复依赖的解决办法,试了几个都不管用,后面才排查到是状态栏显示框架与supportV7包里面有重复了。

第一种解决办法是删掉状态栏显示框架(com.jaeger.statusbaruitl:library:1.4.0)。

第二种解决办法是添加个design包(com.android.support:design:28.0.0与V7包同版本)。

引入design support库报错:Duplicate class android.support.v4.app.INotificationSideChannel found in modules core-1.9.0.aar -> core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-24.2.1.aar -> support-compat-24.2.1-runtime (com.android.support:support-compat:24.2.1) Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules core-1.9.0.aar -> core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-24.2.1.aar -> support-compat-24.2.1-runtime (com.android.support:support-compat:24.2.1) Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules core-1.9.0.aar -> core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-24.2.1.aar -> support-compat-24.2.1-runtime (com.android.support:support-compat:24.2.1) Duplicate class android.support.v4.os.IResultReceiver found in modules core-1.9.0.aar -> core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-24.2.1.aar -> support-compat-24.2.1-runtime (com.android.support:support-compat:24.2.1) Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules core-1.9.0.aar -> core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-24.2.1.aar -> support-compat-24.2.1-runtime (com.android.support:support-compat:24.2.1) Duplicate class android.support.v4.os.IResultReceiver$Stub$Proxy found in modules core-1.9.0.aar -> core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-24.2.1.aar -> support-compat-24.2.1-runtime (com.android.support:support-compat:24.2.1) Duplicate class android.support.v4.os.ResultReceiver found in modules core-1.9.0.aar -> core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-24.2.1.aar -> support-compat-24.2.1-runtime (com.android.support:support-compat:24.2.1) Duplicate class android.support.v4.os.ResultReceiver$1 found in modules core-1.9.0.aar -> core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-24.2.1.aar -> support-compat-24.2.1-runtime (com.android.support:support-compat:24.2.1) Duplicate class android.support.v4.os.ResultReceiver$MyResultReceiver found in modules core-1.9.0.aar -> core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-24.2.1.aar -> support-compat-24.2.1-runtime (com.android.support:support-compat:24.2.1) Duplicate class android.support.v4.os.ResultReceiver$MyRunnable found in modules core-1.9.0.aar -> core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-24.2.1.aar -> support-compat-24.2.1-runtime (com.android.support:support-compat:24.2.1)
最新发布
07-12
<think>我们正在处理一个Android开发中的依赖冲突问题。用户引入了design support库,但遇到了Duplicate class错误,涉及androidx.core和com.android.support的冲突。这通常是因为项目同时使用了AndroidX和旧版Support库,导致重复。 根据引用[3]和引用[4],我们可以通过排除冲突的模块或统一使用AndroidX来解决。由于用户提到的是design support库,我们需要注意design库的版本可能依赖于旧版support库,而项目中可能已经部分迁移到了AndroidX。 解决方案步骤: 1. 尝试迁移到AndroidX(如果项目允许)。Android Studio提供了迁移选项:Refactor > Migrate to AndroidX。 2. 如果暂时不能迁移,则需确保所有support库版本一致,并排除重复。 但是,用户错误信息中提到了`Duplicate class androidx.core`和`com.android.support`,这表明项目混合了AndroidX(androidx.core)和Support库(com.android.support)。因此,我们需要将整个项目统一到AndroidX,或者将design库也降级到与support库一致的版本(但design库的新版本可能已经依赖AndroidX)。 由于design库在28.0.0版本之后就不再更新(后续被Material Design组件库替代),而AndroidX是未来的方向,建议迁移到AndroidX并使用新的Material Design库。 具体操作: 方案一:迁移到AndroidX 1. 在gradle.properties文件中添加: ``` android.useAndroidX=true android.enableJetifier=true ``` 2. 使用Android Studio的迁移工具:Refactor > Migrate to AndroidX。 3.design库替换为Material Design库(com.google.android.material:material),因为新的Material组件库是AndroidX的一部分。 方案二:排除冲突(临时解决,不推荐长期使用) 如果无法立即迁移,可以尝试排除design库中引入的support-v4模块,但注意这可能导致功能缺失。 在build.gradle中: ```groovy implementation ('com.android.support:design:28.0.0') { exclude group: 'com.android.support', module: 'support-v4' // 根据错误信息排除其他重复的模块 } ``` 但是,由于错误信息中出现了androidx.core,说明项目中已经有AndroidX的库,所以排除可能无法完全解决问题。因此,强烈建议迁移到AndroidX。 根据引用[2],也可以参考官方文档解决重复的问题:https://developer.android.com/studio/build/dependencies#duplicate_classes 综上所述,最佳方案是迁移到AndroidX并使用新的Material Design组件库。 相关问题: 1. 如何将Android项目迁移到AndroidX? 2. Material Design组件库如何引入和使用? 3. 如何解决Android依赖冲突的其他常见方法?</think>### Android 引入 Design Support 库时报重复冲突的解决方案 您遇到的 `Duplicate class androidx.core` 和 `com.android.support` 冲突是由于项目同时使用了 AndroidX 和旧版 Support 库造成的混合依赖问题。以下是分步解决方案: #### ✅ 最佳解决方案:迁移到 AndroidX 1. **在 `gradle.properties` 添加配置**: ```properties android.useAndroidX=true android.enableJetifier=true ``` 2. **修改 `build.gradle` 依赖**: ```groovy dependencies { // 替换旧版 Design Support 库为 Material Components implementation 'com.google.android.material:material:1.6.0' // 确保其他库也使用 AndroidX implementation 'androidx.appcompat:appcompat:1.4.2' } ``` 3. **执行清理操作**: - 在 Android Studio 中选择 **Refactor > Migrate to AndroidX** - 清理项目:`Build > Clean Project` + `Build > Rebuild Project` #### ⚠️ 临时解决方案(不推荐长期使用) 如果暂时无法迁移,可尝试排除冲突模块: ```groovy implementation ('com.android.support:design:28.0.0') { exclude group: 'com.android.support', module: 'support-v4' exclude group: 'com.android.support', module: 'support-compat' } ``` #### 🔍 验证是否解决 检查构建输出中是否还有以下错误: ``` Duplicate class androidx.core... Duplicate class com.android.support... ``` 若错误消失,说明冲突已解决[^2][^3]。 #### ⚙️ 预防措施 1. 统一所有依赖库的版本号 2. 定期运行 `./gradlew app:dependencies` 检查依赖树 3. 避免同时使用 Support 库和 AndroidX 库 > 建议优先采用 AndroidX 迁移方案,这是 Google 官方推荐的解决路径,详见 [Android 官方依赖管理指南](https://developer.android.com/studio/build/dependencies)[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值