微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在 kotlin 多平台移动设备中导入依赖项

如何解决无法在 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 类时,它在 androidMaincommonMain 源集中对我都有效,IDEA 会自动导入 HttpClient

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

不过,为了以防万一,我已经把我的最小项目放在了 Github (here) 上,也许你可以在那里找到提示。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。