android - 如何排除 Kotlin 中测试类的显式Api 警告?

标签 android kotlin

我在 gradle 中有启用了 explicitApi kotlin 功能的 Android 库模块

android {
    kotlinOptions {
        freeCompilerArgs += '-Xexplicit-api=warning'
    }
}
一切都很好,但问题是包 src/test 和 src/androidTest 中的测试类也会报告警告。
如何从显式 api 控制中排除测试类?
谢谢

最佳答案

据我所知,你不能!我正考虑在这周打开一个错误报告,但从未得到它。同时,我建议您在构建脚本中添加类似这样的内容,这至少可以为 Kotlin 编译器修复它(但您仍然会看到 IDE 警告):

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) {
    if (!it.name.contains("Test")) {
        kotlinOptions.freeCompilerArgs += "-Xexplicit-api=strict"
    }
}
如果您使用 Gradle Kotlin DSL:
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    if ("UnitTest" !in name) {
        kotlinOptions.freeCompilerArgs += "-Xexplicit-api=strict"
    }
}
并且不要在 android.kotlinOptions 中设置编译器参数,仅在该 block 中,因此它仅应用于非测试源集。
编辑:我刚刚检查并在 IntelliJ 中修复了警告错误,因此它应该在几个月到一年内在 Android Studio 中修复。

关于android - 如何排除 Kotlin 中测试类的显式Api 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64267076/

相关文章:

android - 在单元测试中调用 Dispatchers.setMain() 时出错

java - Spring Integration ErrorMessage 中的 null originalMessage

android - 应用程序在构建回栈时崩溃

java - 如何用Java Intent解决这个问题?

java - 如何通过在android中点击它来缩放图像

android - 无法访问服务公共(public)类 MessagingService 扩展 FirebaseMessagingService

java - 在android中解析href内容的文本

kotlin - 使用 Dagger 提供没有接口(interface)的实例

google-app-engine - 如何在使用 Gradle 的 AppEngine 项目中使用 Kotlin

java - 如何循环设置按钮布局参数?