【发布时间】:2021-04-27 00:42:29
【问题描述】:
我创建了一个新的 kotlin 多平台移动项目。我遵循了官方文档。 基本项目正在运行,我能够毫无问题地在 android 上构建它。
我想添加一些api,我找到了ktor,这是我以前从未使用过的。我在这里关注了文档:https://kotlinlang.org/docs/mobile/use-ktor-for-networking.html 和这里的教程:https://proandroiddev.com/kotlin-multiplatform-very-beginners-guide-part-2-api-d54f7326dc57,我所做的所有更改都是:
我将ktor 库添加到build.gradle.kts(:shared):
sourceSets {
val commonMain by getting {
dependencies {
implementation ("io.ktor:ktor-client-core:1.5.0")
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
val androidMain by getting {
dependencies {
implementation("com.google.android.material:material:1.2.1")
implementation("io.ktor:ktor-client-android:1.5.0")
}
}
val androidTest by getting {
dependencies {
implementation(kotlin("test-junit"))
implementation("junit:junit:4.13")
}
}
val iosMain by getting {
dependencies {
implementation("io.ktor:ktor-client-ios:1.5.0")
}
}
val iosTest by getting
}
我创建了Api 类,我想在其中创建和使用HttpClient:
class Api() {
private val client = HttpClient()
suspend fun fetch(): String {
return ""
}
}
但HttpCLient() 是“未解析的引用”,无法导入。我也尝试手动添加 import io.ktor.client.HttpClient
但io 是“未解决的参考”。
我也尝试了许多重建/清理/同步。
我究竟做错了什么?我错过了什么吗?
【问题讨论】:
-
我在 1.5.1 中遇到了同样的问题,您发现问题所在了吗?
-
使用 1.4.2 版本似乎可行,但我怀疑这是否是实际的解决方案?
-
当您说“未解决的参考”时,我假设您是在谈论您的 IDE?我只是在这里用插件
kotlin("multiplatform") version "1.4.21"和ktor:1.5.0尝试了同样的方法(也有1.5.1,但只在commonMain中,也只是在commonMain中添加了代码)并且它能够解决它......但是我使用 Intellij IDEA Ultimate 2021.1 EAP ......也许有些问题已修复? ;-) 我知道我以前在 Intellij 上遇到过这样的问题,不仅是在多平台上,而且我忘记了我是如何解决它的 :-) 现在它可以工作了:-P -
我也面临同样的问题。你找到解决办法了吗?
-
我遇到了同样的问题。更新到 1.5.4 或 1.6.0 没有帮助。当我注释掉 'iosTarget("ios")' 中的所有内容时,import 语句又变好了。我怀疑问题出在其他地方,即使 Android Studio 没有告诉你在哪里。
标签: kotlin ktor kotlin-multiplatform-mobile