无法将 io.ktor 导入 Android Studio 中 KMM 的通用模块
Posted
技术标签:
【中文标题】无法将 io.ktor 导入 Android Studio 中 KMM 的通用模块【英文标题】:Cannot import io.ktor to common module of KMM in Android Studio 【发布时间】:2021-06-12 06:52:49 【问题描述】:所以我是 Kotlin 多平台移动和一般移动开发的新手。我正在尝试按照on KMM tutorials 此处的本教程在我的项目中使用 Ktor。
添加依赖后,如build.gradle.kts所示 下面(commonMain、androidMain 和 iosMain 的依赖项):
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
plugins
kotlin("multiplatform")
id("com.android.library")
kotlin
android()
ios
binaries
framework
baseName = "shared"
val ktorVersion = "1.5.2"
sourceSets
val commonMain by getting
dependencies
implementation("io.ktor:ktor-client-core:$ktorVersion")
val commonTest by getting
dependencies
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
val androidMain by getting
dependencies
implementation ("io.ktor:ktor-client-android:$ktorVersion")
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:$ktorVersion")
val iosTest by getting
android
compileSdkVersion(29)
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
defaultConfig
minSdkVersion(24)
targetSdkVersion(29)
val packForXcode by tasks.creating(Sync::class)
group = "build"
val mode = System.getenv("CONFIGURATION") ?: "DEBUG"
val sdkName = System.getenv("SDK_NAME") ?: "iphonesimulator"
val targetName = "ios" + if (sdkName.startsWith("iphoneos")) "Arm64" else "X64"
val framework = kotlin.targets.getByName<KotlinNativeTarget>(targetName).binaries.getFramework(mode)
inputs.property("mode", mode)
dependsOn(framework.linkTask)
val targetDir = File(buildDir, "xcode-frameworks")
from( framework.outputDirectory )
into(targetDir)
tasks.getByName("build").dependsOn(packForXcode)
我尝试import io.ktor.client.*
到公共模块中的一个类,但它无法解决。但是,当我尝试对 Android 模块中的一个类做同样的事情时,它就可以工作了。请看下面的截图:
所以我的问题是:我哪里出错了?或者,它应该是这样的吗?从文档中,我相信我正在尝试做的网络应该在公共模块中完成,而不是在平台特定模块中完成。
请帮忙,我一直在四处寻找问题所在,但没有运气。谢谢!
编辑: 我一直在 Android Studio 中收到此通知
我google了一下,好像是错误通知is incorrect?
【问题讨论】:
我在 Android Studio 4.1.2、4.2 beta 6 和 Arctic Fox 2020.3.1 中遇到了相同的分辨率错误,尽管项目编译没有任何错误。这很可能是 KMM 插件中的一个错误。 @AlekseiTirman 是正确的,即使我已经多次面对这个问题,有时我仍然会面对这个问题。通常我会再次同步gradle
,这对我有用,但有几次我需要做Invalidate Cache and restart
。请尝试添加您的代码并运行,如果可行,那么除了 KMM 插件本身之外,您没有任何问题。
我尝试过同步 gradle 和无效缓存 + 重启 Android Studio,但都没有奏效。我仍然迷失在这个问题上!
【参考方案1】:
在根 build.gradle.kts
中将 org.jetbrains.kotlin:kotlin-gradle-plugin
从 1.4.10 更新到 1.4.31 为我解决了这个问题。
这就是我的build.gradle.kts
文件的样子:
buildscript
repositories
gradlePluginPortal()
jcenter()
google()
mavenCentral()
dependencies
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31")
classpath("com.android.tools.build:gradle:4.2.0-beta06")
classpath("com.squareup.sqldelight:gradle-plugin:1.4.4")
allprojects
repositories
google()
jcenter()
mavenCentral()
【讨论】:
为我工作!谢谢 谢谢!!!!它终于奏效了。您是如何发现问题出在 kotlin gradle 插件上的? 不幸的是,这对我不起作用,尽管设置相同。以上是关于无法将 io.ktor 导入 Android Studio 中 KMM 的通用模块的主要内容,如果未能解决你的问题,请参考以下文章
编译器无法解析 io.ktor.client.features.logging 中的类
如何让 KTOR Logging 在 Android 上编译?
如何在 Ktor-client for Android 中清除不记名令牌