当前位置:   article > 正文

记一个 Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8 编译问题引发的案例_kotlin bom

kotlin bom

由于要吃饭的原因,要搞一下android原生开发,下载最新的android studio 2202.3.1,用默认的向导生成了一个android project。报了一堆错,我以为是android studio没有安装好的原因,想尽办法清理了android studio的安装,重新安装后,还是报错,在其他的电脑也是同样的情况

实际只有两个错,一个是sdk的版本。我用的是33, 但是依赖库要求就34。第二个错误,就是Duplicate class的,用这个转帖的文章的方法二,解决问题。

我这里修改的配置如下 build.gradle.kts(module:app)

  1. plugins {
  2. id("com.android.application")
  3. }
  4. android {
  5. namespace = "com.example.s02"
  6. compileSdk = 34
  7. defaultConfig {
  8. applicationId = "com.example.s02"
  9. minSdk = 24
  10. targetSdk = 33
  11. versionCode = 1
  12. versionName = "1.0"
  13. testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
  14. }
  15. buildTypes {
  16. release {
  17. isMinifyEnabled = false
  18. proguardFiles(
  19. getDefaultProguardFile("proguard-android-optimize.txt"),
  20. "proguard-rules.pro"
  21. )
  22. }
  23. }
  24. compileOptions {
  25. sourceCompatibility = JavaVersion.VERSION_1_8
  26. targetCompatibility = JavaVersion.VERSION_1_8
  27. }
  28. buildFeatures {
  29. viewBinding = true
  30. }
  31. }
  32. dependencies {
  33. //-------------以下是加入下面的内容
  34. constraints {
  35. add("implementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk7") {
  36. version {
  37. require("1.8.0")
  38. }
  39. }
  40. add("implementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk8") {
  41. version {
  42. require("1.8.0")
  43. }
  44. }
  45. }
  46. //-------------以上是增加的内容
  47. implementation("androidx.appcompat:appcompat:1.6.1")
  48. implementation("com.google.android.material:material:1.9.0")
  49. implementation("androidx.constraintlayout:constraintlayout:2.1.4")
  50. implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.1")
  51. implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
  52. implementation("androidx.navigation:navigation-fragment:2.7.0")
  53. implementation("androidx.navigation:navigation-ui:2.7.0")
  54. testImplementation("junit:junit:4.13.2")
  55. androidTestImplementation("androidx.test.ext:junit:1.1.5")
  56. androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
  57. }

-----------------------------------------分割线-----------------------------------

某天将项目 kotlin 版本升级到了 1.8.0 ,然后编译报错了,
Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8
然后开始寻求解决方案...

Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8

kotlin-stdlib

kotlin 1.8.0 基于 JVM 1.8 编译,不再支持 JVM 1.6 和 1.7。后续不用单独在build.gradle 依赖 kotlin-stdlib-jdk7 and kotlin-stdlib-jdk8。

If you have explicitly declared kotlin-stdlib-jdk7 and kotlin-stdlib-jdk8 as dependencies in your build scripts, then you should replace them with kotlin-stdlib.

解决 Duplicate class 的编译问题

  • 方法一
    使用 kotlin-bom 清单
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
  • 方法二
    强制把 kotlin-stdlib-jdk7 和 kotlin-stdlib-jdk8 升级到 1.8.0
  1. dependencies {
  2.     constraints {
  3.         add("implementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk7") {
  4.             version {
  5.                 require("1.8.0")
  6.             }
  7.         }
  8.         add("implementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk8") {
  9.             version {
  10.                 require("1.8.0")
  11.             }
  12.         }
  13.     }
  14. }
  • 方法三
    手动移除 kotlin-stdlib,不推荐
  1. dependencies {
  2. implementation("com.example:lib:1.0") {
  3. exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib"
  4. }
  5. }

参考文档:Configure a Gradle project | Kotlin Documentation

kotlin-bom 库版本清单表

  • org.jetbrains.kotlin » kotlin-stdlib

  • org.jetbrains.kotlin » kotlin-stdlib-jdk7

  • org.jetbrains.kotlin » kotlin-stdlib-jdk8

  • org.jetbrains.kotlin » kotlin-stdlib-js

  • org.jetbrains.kotlin » kotlin-stdlib-common

  • org.jetbrains.kotlin » kotlin-reflect

  • org.jetbrains.kotlin » kotlin-osgi-bundle

  • org.jetbrains.kotlin » kotlin-test

  • org.jetbrains.kotlin » kotlin-test-junit

  • org.jetbrains.kotlin » kotlin-test-junit5

  • org.jetbrains.kotlin » kotlin-test-testng

  • org.jetbrains.kotlin » kotlin-test-js

  • org.jetbrains.kotlin » kotlin-test-common

  • org.jetbrains.kotlin » kotlin-test-annotations-common

  • org.jetbrains.kotlin » kotlin-main-kts

  • org.jetbrains.kotlin » kotlin-script-runtime

  • org.jetbrains.kotlin » kotlin-script-util

  • org.jetbrains.kotlin » kotlin-scripting-common

  • org.jetbrains.kotlin » kotlin-scripting-jvm

  • org.jetbrains.kotlin » kotlin-scripting-jvm-host

  • org.jetbrains.kotlin » kotlin-scripting-ide-services

  • org.jetbrains.kotlin » kotlin-compiler

  • org.jetbrains.kotlin » kotlin-compiler-embeddable

  • org.jetbrains.kotlin » kotlin-daemon-client

具体版本对应关系:
kotlin-bom 库版本对应表查询:https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-bom

作者:SharpCJ

出处:https://www.cnblogs.com/joy99/p/17398903.html

本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位置注明作者及出处。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/314696
推荐阅读
相关标签
  

闽ICP备14008679号