React Native CLI项目运行失败::app:checkDebugDuplicateClasses任务报错
checkDebugDuplicateClasses任务执行失败 问题详情
构建时任务:app:checkDebugDuplicateClasses执行失败,核心错误为:
执行com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable时发生失败
在模块core-1.9.0.aar -> core-1.9.0-runtime (androidx.core:core:1.9.0)和support-compat-27.1.1.aar -> support-compat-27.1.1-runtime (com.android.support:support-compat:27.1.1)中发现重复类:
android.support.v4.app.INotificationSideChannel
android.support.v4.app.INotificationSideChannel$Stub
android.support.v4.app.INotificationSideChannel$Stub$Proxy
android.support.v4.os.IResultReceiver
android.support.v4.os.IResultReceiver$Stub
android.support.v4.os.IResultReceiver$Stub$Proxy
android.support.v4.os.ResultReceiver
android.support.v4.os.ResultReceiver$1
android.support.v4.os.ResultReceiver$MyResultReceiver
android.support.v4.os.ResultReceiver$MyRunnable
该问题是AndroidX库与旧版Android Support库的类冲突导致,两者包含相同的v4包下的类,构建时无法区分。
解决方案
1. 强制统一依赖版本(优先推荐)
在项目根目录的build.gradle文件中,添加依赖解析规则,强制所有依赖使用AndroidX版本的核心库:
allprojects { repositories { // 保留原有仓库配置(如google()、mavenCentral()等) } configurations.all { resolutionStrategy { // 强制使用AndroidX的core库,覆盖旧版support-compat force 'androidx.core:core:1.9.0' // 若存在其他support库冲突,可添加对应AndroidX版本的强制规则,例如: // force 'androidx.appcompat:appcompat:1.6.1' } } }
2. 排查并移除旧Support库依赖
通过Gradle命令查看完整依赖树,定位引入com.android.support:support-compat:27.1.1的第三方库:
./gradlew app:dependencies
找到目标依赖后,在app模块的build.gradle中排除其旧Support库依赖:
dependencies { // 示例:假设第三方库some-library引入了旧support库 implementation('com.example:some-library:1.0.0') { exclude group: 'com.android.support', module: 'support-compat' } }
3. 确认AndroidX迁移配置
检查项目根目录的gradle.properties文件,确保已开启AndroidX自动迁移:
android.useAndroidX=true android.enableJetifier=true
Jetifier会自动将所有旧Support库依赖转换为对应的AndroidX版本,若之前未开启,开启后重新执行构建。
4. 清理缓存并重新构建
执行以下命令清理Gradle缓存,避免缓存导致的异常:
./gradlew clean ./gradlew assembleDebug
内容的提问来源于stack exchange,提问作者Nikhil Kurle

