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

React Native Android构建报错: :app:checkDebugDuplicateClasses

React Native构建错误:Kotlin重复类冲突

错误信息

执行构建时出现以下重复类错误:

* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10)
  Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10)
  Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10)
  Duplicate class kotlin.jdk7.AutoCloseableKt found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10)
  Duplicate class kotlin.random.jdk8.PlatformThreadLocalRandom found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10)
  Duplicate class kotlin.streams.jdk8.StreamsKt found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10)
  Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$1 found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10)
  Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$2 found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10)
  Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$3 found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10)
  Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$4 found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10)
  Duplicate class kotlin.text.jdk8.RegexExtensionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10)
  Duplicate class kotlin.time.jdk8.DurationConversionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.4.10.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10)

项目配置

根目录build.gradle

ext {
        buildToolsVersion = "30.0.3"
        minSdkVersion = 21
        compileSdkVersion = 30
        targetSdkVersion = 30
        kotlinVersion = "1.4.10"
        RNNKotlinVersion = kotlinVersion
        playServicesVersion = "16.0.0"
        googlePlayServicesVersion = "17.0.0"
    }
...
dependencies {
        classpath 'com.android.tools.build:gradle:4.0.1'
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
        classpath 'com.google.gms:google-services:4.2.0'
    classpath 'io.fabric.tools:gradle:1.+'
    }

package.json依赖

"dependencies": {
    "@invertase/react-native-apple-authentication": "^2.2.2",
    "@notifee/react-native": "^0.5.1",
    "@react-native-community/async-storage": "^1.9.0",
    "@react-native-community/geolocation": "^2.0.2",
    "@react-native-community/netinfo": "2.0.10",
    "@react-native-community/picker": "^1.8.1",
    "axios": "^0.19.2",
    "immutable": "^4.0.0-rc.12",
    "libphonenumber-js": "^1.7.50",
    "lodash": "^4.17.15",
    "lottie-ios": "3.1.8",
    "lottie-react-native": "^3.5.0",
    "mobx": "^5.15.4",
    "mobx-react": "^6.1.8",
    "mobx-state-tree": "^3.15.0",
    "moment": "^2.26.0",
    "native-base": "^2.13.12",
    "react": "^16.12.0",
    "react-devtools-core": "3",
    "react-native": "0.61.5",
    "react-native-android-location-enabler": "1.1.0",
    "react-native-axios": "^0.17.1",
    "react-native-calendars": "^1.265.0",
    "react-native-datepicker": "^1.7.0",
    "react-native-dropdown-picker": "^5.4.4",
    "react-native-fast-image": "^8.1.5",
    "react-native-fbsdk": "^3.0.0",
    "react-native-firebase": "^5.6.0",
    "react-native-geolocation-service": "^5.0.0",
    "react-native-gesture-handler": "^1.6.0",
    "react-native-google-signin": "^2.1.1",
    "react-native-ibm-mobilefirst": "^8.0.2021040715",
    "react-native-inappbrowser-reborn": "^3.4.0",
    "react-native-maps": "^0.27.1",
    "react-native-navigation": "6.4.0",
    "react-native-navigation-hooks": "^5.0.0",
    "react-native-phone-call": "^1.0.9",
    "react-native-picker-select": "^8.0.4",
    "react-native-shadow": "^1.2.2",
    "react-native-swipeable": "^0.6.0",
    "react-native-vector-icons": "^6.6.0",
    "react-native-webview": "^9.2.2",
    "react-redux": "^7.2.0",
    "redux": "^4.0.5",
    "redux-persist": "^6.0.0",
    "redux-saga": "^1.1.3",
    "reselect": "^4.0.0"
  }

模块build.gradle依赖

dependencies {
    implementation project(':react-native-geolocation-service')
    implementation project(':lottie-react-native')
 
    implementation project(':react-native-android-location-enabler')
    implementation project(':@react-native-community_netinfo')
    implementation project(':@notifee_react-native')
    implementation project(':react-native-webview')
      //Add these lines
    implementation project(':react-native-firebase')
    implementation "com.google.android.gms:play-services-base:16.1.0"
    implementation "com.google.firebase:firebase-core:19.0.0"
    implementation "com.google.firebase:firebase-messaging:18.0.0"
    implementation "com.google.firebase:firebase-dynamic-links:19.0.0"
    implementation "com.google.firebase:firebase-invites:17.0.0"
    implementation "com.google.firebase:firebase-auth:17.0.0"

    implementation project(':react-native-inappbrowser-reborn')
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:customtabs:28.0.0'
    implementation 'com.google.android.gms:play-services-wallet:16.0.1'

    compile project(':oppwa.mobile-2.49.0')
    implementation project(':react-native-fast-image')
    implementation project(':@react-native-community_async-storage')
    implementation project(':react-native-navigation')
    implementation project(':@react-native-community_geolocation')
    implementation project(':react-native-maps')
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.google.android.gms:play-services-maps:16.1.0'
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.facebook.react:react-native:+"
    implementation project(path: ':oppwa.mobile-2.49.0')

    if (enableHermes) {
        def hermesPath = "../../node_modules/hermes-engine/android/";
        debugImplementation files(hermesPath + "hermes-debug.aar")
        releaseImplementation files(hermesPath + "hermes-release.aar")
    } else {
        implementation jscFlavor
    }
}

解决方案

1. 强制统一Kotlin依赖版本

在根目录build.gradle的allprojects块中添加版本强制策略,确保所有模块使用项目指定的Kotlin版本:

allprojects {
    repositories {
        // 保留原有仓库配置
    }
    configurations.all {
        resolutionStrategy {
            force "org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}"
            force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${kotlinVersion}"
            force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}"
        }
    }
}

2. 定位冲突依赖来源

执行命令查看完整依赖树,找到引入Kotlin 1.8.0的第三方库:

./gradlew app:dependencies

找到对应依赖后,在模块build.gradle中排除冲突的Kotlin子依赖:

implementation project(':冲突库名称') {
    exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8'
}

3. 清理构建缓存与依赖

执行以下命令清理旧缓存和依赖,重新安装:

./gradlew clean
rm -rf node_modules
rm package-lock.json # 若使用yarn则删除yarn.lock
npm install # 或 yarn install

4. 匹配Gradle与Kotlin版本兼容性

当前使用的Gradle插件版本为4.0.1,建议使用与之兼容的Kotlin版本(如1.4.32),修改根build.gradle中的版本配置:

ext {
    // ...其他配置
    kotlinVersion = "1.4.32"
    RNNKotlinVersion = kotlinVersion
    // ...
}

内容的提问来源于stack exchange,提问作者Suleiman Zhukov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:20:40