【发布时间】:2021-03-08 04:00:31
【问题描述】:
我在共享模块的 build.gradle.kts 文件中有这些依赖项。
val coroutinesVersion = "1.3.9-native-mt"
val serializationVersion = "1.0.1"
val ktorVersion = "1.4.2"
val sqlDelightVersion = "1.4.4"
sourceSets {
val commonMain by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$serializationVersion")
implementation("io.ktor:ktor-client-core:$ktorVersion")
implementation("io.ktor:ktor-client-serialization:$ktorVersion")
implementation("com.squareup.sqldelight:runtime:$sqlDelightVersion")
implementation("com.squareup.sqldelight:coroutines-extensions:$sqlDelightVersion")
}
}
...
}
当我运行应用程序时,Android 应用程序一切正常。但是运行 ios 应用程序时出现运行时崩溃。在日志中,我看到Ktor 抱怨协程版本不是native-mt。我不明白为什么,因为 1.4.# 版本的协程没有单独的本机多线程分支。
我查看了 External Libraries 文件夹,发现我的协程版本一直设置为 1.3.9。如果我删除 com.squareup.sqldelight:coroutines-extensions 一切都会再次正常工作。但我需要该依赖项才能从 db 消耗 Flow。
我尝试从 sqldelight 扩展中排除协程,但它没有在 Xcode 构建中编译。
implementation("com.squareup.sqldelight:coroutines-extensions:$sqlDelightVersion") {
exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core")
}
所以我的问题是:
- 为什么 SQLDelight 会覆盖
kotlinx-coroutines-core版本? - 为什么 Ktor 想要
kotlinx-coroutines-core版本只带有native-mt后缀? - 如何解决这个版本问题?
【问题讨论】:
标签: android ios kotlin-coroutines kotlin-multiplatform sqldelight