iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0

Day 20 提到使用 constraint {} 區塊來解決 stdlib 的依賴項衝突。

先來看一則錯誤訊息。

https://ithelp.ithome.com.tw/upload/images/20231007/20151956eQShUh4UZj.png

誠如 Day 19 提到的,這是因為有其他的依賴項仍使用 kotlin-stdlib-jdk7kotlin-stdlib-jdk8,而與專案的 kotlin-stdlib 發生衝突。

方法 1:使用 constraint {} 來解決依賴項衝突。

build.gradle(Module :app) 檔案

dependencies {
    constraints {
            implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") {
                because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
            }
            implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") {
                because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
            }
        }
    ...
}

方法 2:調升在 build.gradle(Project: 專案名稱) 內的 org.jetbrains.kotlin.android 使用的版本。

build.gradle(Project: 專案名稱) 檔案

plugins {
    ...
    // id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
}

上面例子顯示,原本使用的 org.jetbrains.kotlin.android 版本是 1.7.0,依 Day 19 引用的官方文件,可以先嘗試提升至 1.8.0 來解決依賴項衝突。

資料來源
stackoverflow - Duplicate class in Kotlin Android


上一篇
[Day 22] 認識依賴項約束 (dependency constraints)
下一篇
[Day 24] Compose 對應 Kotlin 的相容性
系列文
[Android] 怎麼蓋地基?論 build.gradle 與它的快樂夥伴們30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言