如何解决无法在 kotlin 多平台移动设备中导入依赖项
我创建了一个新的 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 ""
}
}
BUT HttpCLient()
是“未解析的引用”,无法导入。我还尝试手动添加 import io.ktor.client.HttpClient
但是 io
是“未解析的引用”。
我也尝试了很多重建/清理/同步。
我究竟做错了什么?我错过了什么吗?
解决方法
我在使用 Android Studio 4.1.3 的 Windows 7 上遇到了同样的问题。在项目的构建脚本中,在构建脚本的依赖项部分,将 kotlin-gradle-plugin 工件的版本从 1.4.10 更新到 1.4.32 时,它已解决。以下是项目 build.gradle.kts 的复制粘贴:
buildscript {
repositories {
gradlePluginPortal()
jcenter()
google()
mavenCentral()
}
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32")
classpath("com.android.tools.build:gradle:4.1.3")
}
}
,
使用 IntelliJ IDEA Ultimate 2020.3 我从 File->New...->Project 创建了一个 KMM 项目。然后,我完全按照您在问题中包含的代码中所做的那样,将 ktor 添加为依赖项。创建像您一样的 ApiClient
类时,它在 androidMain
和 commonMain
源集中对我都有效,IDEA 会自动导入 HttpClient
。
因此,由于我无法重现这一点,我担心在不知道您正在运行的确切代码的情况下,我将很难提供帮助。
不过,为了以防万一,我已经把我的最小项目放在了 Github (here) 上,也许你可以在那里找到提示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。