Kotlin安卓库配置explicitApiWarning()无警告报错,如何正确配置
配置不生效的核心原因
你当前使用kotlin-android插件开发Android库,外层的kotlin { explicitApiWarning() }是纯Kotlin/JVM库的专用配置方式,Android项目不识别该外层配置,因此不会生效。同时请先确认你的Kotlin插件版本 >= 1.4,该功能是Kotlin 1.4版本才正式引入的。
适配Android库的正确配置方案
Android场景下需要通过修改Kotlin编译任务的参数来开启显式API模式,以下配置全版本兼容,直接添加到你的build.gradle文件任意位置即可:
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { // 开启警告级别的显式API校验 freeCompilerArgs += "-Xexplicit-api=warning" } }
explicitApiWarning与explicitApi共存说明
二者是互斥配置,无法同时生效,分别对应显式API校验的两个等级:
explicitApiWarning对应warning等级:代码不符合规范时仅抛出警告,不会阻断编译流程explicitApi对应strict等级:代码不符合规范时直接抛出编译错误,阻断构建
如果同时配置两个参数,后添加的配置会覆盖之前的配置。
推荐配置方案
可以根据构建场景动态切换校验等级,兼顾开发效率与代码规范:
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { // Release构建用严格模式阻断不合规代码,Debug构建用警告模式不影响调试 if (name.contains("release")) { freeCompilerArgs += "-Xexplicit-api=strict" } else { freeCompilerArgs += "-Xexplicit-api=warning" } } }
生效验证方法
该规则仅对public/protected修饰的类、方法、属性生效,private/internal修饰的成员不会触发校验。你可以添加以下测试代码执行编译,验证配置是否生效:
// 无显式返回类型的public方法,会触发对应警告/错误 public fun getTestString() = "hello"
内容的提问来源于stack exchange,提问作者user3728425
相关产品推荐
相关产品推荐

