Day 20 提到使用 constraint {}
區塊來解決 stdlib 的依賴項衝突。
先來看一則錯誤訊息。
誠如 Day 19 提到的,這是因為有其他的依賴項仍使用 kotlin-stdlib-jdk7
和 kotlin-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