gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 16:30:28 28 4
gpt4 key购买 nike

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

实现“io.ktor:ktor-client-logging:$ktor_version”

然后只使用这个 fragment

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

问题是编译器“忽略”了作为依赖项添加的包“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”添加到依赖项中。

实现“io.ktor:ktor-client-logging-jvm:$ktor_version”

有了这个依赖,Android Studio 成功找到包,但编译失败并出现以下错误

找到了多个具有操作系统独立路径“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 block :

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

关于android - 编译器无法解析 io.ktor.client.features.logging 中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56484281/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com