在 Android Studio 中使用 Kotlin 编译器选项进行测试源

Eri*_*rik 6 android compiler-options gradle kotlin android-studio

在我的测试源中,我想使用一些实验性的 Kotlin 编译器功能,以便在 Android Studio 中看不到它们的 lint 警告和错误。例如,我想将以下 Kotlin 选项应用于所有测试源。

compileTestKotlin {
  kotlinOptions {
    freeCompilerArgs += [
        '-Xopt-in=kotlin.time.ExperimentalTime',
        '-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi',
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

来源

这在 Android 项目中是行不通的,因为没有compileTestKotlin方法。根据kotlin-android Gradle 插件文档,应该可以在块中编译VariantName Kotlin afterEvaluate,例如:

afterEvaluate {
  compileDebugUnitTestKotlin {
    kotlinOptions {
      freeCompilerArgs += [
        '-Xopt-in=kotlin.time.ExperimentalTime',
        '-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi',
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

(和类似compileReleaseUnitTestKotlin

尽管这有效(构建和测试运行并顺利通过),但在 Android Studio 中似乎没有效果:实验性编译器功能的使用仍然标记有警告/错误。

如何为我的测试源启用这些编译器功能,以便 AS 识别和使用它们?

Bil*_*ner 9

这对我在 Android Studio 4.2.2、AGP 版本 4.2.0、Kotlin 版本 1.5.10 上有效:

android {
    testOptions {
        kotlinOptions {
            freeCompilerArgs += [
                '-Xopt-in=kotlin.time.ExperimentalTime',
                '-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi',
            ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)