4

我创建了一个新的 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()是“未解决的参考”,它不能被导入。我也尝试手动添加导入io.ktor.client.HttpClient

但是io是“未解决的参考”。我也尝试了许多重建/清理/同步。我究竟做错了什么?我错过了什么吗?

4

2 回答 2

0

我在带有 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")
    }
}
于 2021-04-15T14:53:59.173 回答
-1

使用 IntelliJ IDEA Ultimate 2020.3,我从 File->New...->Project 创建了一个 KMM 项目。然后,我添加 ktor 作为依赖项,就像您在问题中包含的代码中所做的那样。当创建一个ApiClient像你这样的类时,它在源集和源集中都对我androidMain有用commonMain,IDEA 会自动导入HttpClient.

因此,由于我无法重现这一点,我担心在不知道您正在运行的确切代码的情况下,我将很难提供帮助。

但是,以防万一它可能会有所帮助,我已将我的最小项目放在 Github 上(此处),也许您可​​以在那里找到提示。

于 2021-01-30T23:06:43.237 回答