У меня есть эти зависимости в моем файле 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. # Сопрограмм не имеет отдельных нативных многопоточных веток.
Я просмотрел папку «Внешние библиотеки» и обнаружил, что версия сопрограмм в моем случае всегда была установлена на 1.3.9. Если я удалю com.squareup.sqldelight: coroutines-extensions, все снова будет работать нормально. Но мне нужна эта зависимость, чтобы потреблять 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
? - Как я могу решить эту проблему с версиями?