编译器无法解析 io.ktor.client.features.logging 中的 类

Compiler cannot resolve classes in io.ktor.client.features.logging

我正在尝试为 Android 应用程序中的 Ktor http 请求添加日志记录。根据 docs 我必须添加 gradle 依赖项

implementation "io.ktor:ktor-client-logging:$ktor_version"

然后只使用这个片段

val client = HttpClient() {
    install(Logging) {
        logger = Logger.DEFAULT
        level = LogLevel.HEADERS
    }
}

问题是编译器 "ignores" 包 'io.ktor.client.features.logging' 添加为依赖项。奇怪的是 JsonFeature(作为类似的依赖项添加)工作得很好。

install(JsonFeature) { // perfectly works
...
}

install(Logging) { // unresolved reference
...
}

我已经检查了 gradle 添加到项目中的 .jar 文件,它包含所有预期的 类,我可以打开它们并查看源代码,但神奇的是不能'在我的应用程序中使用。经过数小时的研究,我猜它可能与 gradle 元数据有某种关系,或者日志记录功能是多平台的,并且需要一些额外的 gradle 配置,但不幸的是我不是 gradle 专家。

我尝试将 enableFeaturePreview("GRADLE_METADATA") 添加到 settings.gradle,但没有效果。甚至尝试将“-jvm”添加到依赖项中。

implementation "io.ktor:ktor-client-logging-jvm:$ktor_version"

使用此依赖项 Android Studio 成功找到包,但编译失败并出现以下错误

More than one file was found with OS independent path 'META-INF/ktor-http.kotlin_module'

谁能解释一下如何正确配置 Ktor 记录器的依赖关系?

对于 ktor-client-logging 您必须为每个平台设置依赖项:

commonMain {
    dependencies {
        implementation "ch.qos.logback:logback-classic:1.2.3"
        implementation "io.ktor:ktor-client-logging:$ktor_version"
    }
}

androidMain {
    dependencies {
        implementation "io.ktor:ktor-client-logging-jvm:$ktor_version"
    }
}

iosMain {
    dependencies {
        implementation "io.ktor:ktor-client-logging-native:$ktor_version"
    }
}

至于元 META-INF/ktor-http.kotlin_module 添加到 android {} 块内的 app/build.gradle

android {
    packagingOptions {
        exclude 'META-INF/common.kotlin_module'
        exclude 'META-INF/*.kotlin_module'
    }
}