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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:55:14