Kotlin MPP - 无法解析 Stetho 拦截器

Kotlin MPP - Cannot resolve Stetho Interceptor

我第一次尝试使用 Kotlin DSL gradle 文件构建 Kotlin MPP。 这个问题很简单,但我一直在尝试我能想到的一切来解决它:android 共享代码无法解析 Stetho 拦截器

Screenshot of the issue

我的build.gradle.kts

import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget

plugins {
    kotlin("multiplatform")
    id("kotlinx-serialization")
}

kotlin {
    //select iOS target platform depending on the Xcode environment variables
    val iOSTarget: (String, KotlinNativeTarget.() -> Unit) -> KotlinNativeTarget =
        if (System.getenv("SDK_NAME")?.startsWith("iphoneos") == true)
            ::iosArm64
        else
            ::iosX64

    iOSTarget("ios") {
        binaries {
            framework {
                baseName = "SharedCode"
            }
        }
    }

    jvm("android")

    sourceSets["commonMain"].dependencies {
        implementation("org.jetbrains.kotlin:kotlin-stdlib-common")
        implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3")
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:0.14.0")

        // HTTP
        implementation("io.ktor:ktor-client-core:1.3.0-rc")
        implementation("io.ktor:ktor-client-json:1.3.0-rc")
        implementation("io.ktor:ktor-client-serialization:1.3.0-rc")
    }

    sourceSets["androidMain"].dependencies {
        implementation("org.jetbrains.kotlin:kotlin-stdlib")
        implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3")
        implementation("io.ktor:ktor-client-android:1.3.0-rc")
        implementation("io.ktor:ktor-client-json-jvm:1.3.0-rc")
        implementation("io.ktor:ktor-client-serialization-jvm:1.3.0-rc")
        implementation("io.ktor:ktor-client-okhttp:1.3.0-rc")
        implementation("com.squareup.okhttp3:logging-interceptor:4.0.1")
        implementation( "com.facebook.stetho:stetho-okhttp3:1.5.1")
    }

非常感谢您的帮助!

编辑:

所以我发现当我替换

jvm("android")

android()

Stetho-interceptor 可以导入,但是 "expected" 和 "actual" 关键字没有被 Android studio 为 iOS 正确链接:

"Actual property ... has no corresponding expected declaration" 当我悬停 iOS

的实际声明时

当我同时使用两者时

jvm("android") android()

我收到 gradle 错误:

"The target 'android' already exists, but it was not created with the 'jvm' preset. To configure it, access it by name in kotlin.targets or use the preset function 'android'."

如果您已经在使用 android() 目标,则不需要 jvm("android")。如果您想要一个单独的 jvm 目标,那么您应该将其命名为不同的名称(例如 jvm("something") )。

添加 android 目标和清单 + android 定义后,库应该解析。 facebook 库可能依赖于 android 目标,这就是它无法解析的原因。