【问题标题】:Cannot import dependecies in kotlin multiplatform mobile无法在 kotlin 多平台移动设备中导入依赖项
【发布时间】: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


【解决方案1】:

我在装有 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")
    }
}

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-04-30
      • 1970-01-01
      • 2020-04-30
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      相关资源
      最近更新 更多