React Native运行Android报错:checkDebugDuplicateClasses求助
React Native Android 构建 Kotlin 类重复冲突问题(保留
react-native-inappbrowser-reborn的解决方案) 问题描述
执行npx react-native run-android时突然出现以下构建错误,且未提交任何代码变更:
Execution failed for task ':app:checkDebugDuplicateClasses'. A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20) Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.20) Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations$ReflectSdkVersion found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.20) Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20) Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations$ReflectSdkVersion found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20)
已尝试的方案
- 重新执行React Native官方环境配置步骤:
brew install node brew install watchman brew tap homebrew/cask-versions brew install --cask zulu11 - 卸载并重新安装Android Studio
- 在
android/build.gradle中设置统一Kotlin版本:buildToolsVersion = "32.0.0" minSdkVersion = 21 compileSdkVersion = 33 targetSdkVersion = 33 // 配置Kotlin版本 kotlinVersion = "1.8.0"
移除"react-native-inappbrowser-reborn": "^3.7.0"库后错误消失,但仍需使用该库,需找到可行解决方案。
解决方案
1. 强制统一所有依赖的Kotlin版本
在android/build.gradle的allprojects块中添加依赖版本强制策略,确保所有第三方库(包括react-native-inappbrowser-reborn)都使用指定的Kotlin版本:
allprojects { repositories { // 保留你原有的仓库配置(如mavenCentral、google等) } configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib:1.8.0" force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0" force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0" } } }
2. 升级react-native-inappbrowser-reborn到最新版本
旧版本库可能依赖较低版本的Kotlin,升级到最新稳定版通常能解决依赖冲突:
npm install react-native-inappbrowser-reborn@latest # 若使用yarn则执行:yarn add react-native-inappbrowser-reborn@latest
3. 清理构建缓存
清理Android构建缓存和Node依赖缓存,避免缓存导致的版本不一致:
# 清理Android构建缓存 cd android && ./gradlew clean cd .. # 清理Node模块与锁文件 rm -rf node_modules package-lock.json yarn.lock npm install # 或 yarn install
4. 手动排除冲突依赖
如果上述方法无效,先通过Gradle命令查看依赖树,定位冲突来源:
cd android && ./gradlew app:dependencies
找到react-native-inappbrowser-reborn依赖的旧版Kotlin库,在android/app/build.gradle中排除这些冲突依赖:
dependencies { // 保留你原有的其他依赖配置 implementation(project(':react-native-inappbrowser-reborn')) { exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' } }
内容的提问来源于stack exchange,提问作者spatak
相关产品推荐
相关产品推荐

