如何消除Kotlin协程中的‘This declaration needs opt-in’警告?
解决Kotlin协程ExperimentalCoroutinesApi警告问题
你之前的配置无效是因为目标注解不对——你加的kotlin.RequiresOptIn是用来处理自定义的需OptIn注解,而警告提示的是要针对kotlinx.coroutines.ExperimentalCoroutinesApi开启opt-in,所以配置不匹配。
下面给你几种可行的解决办法:
方法一:通过Gradle全局配置(模块级)
修改模块下的build.gradle.kts,替换成针对协程API的正确配置:
android { kotlinOptions { freeCompilerArgs += listOf("-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi") } }
如果想让整个项目的所有模块都生效,可以在项目根目录的build.gradle.kts里添加:
allprojects { tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions { freeCompilerArgs += listOf("-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi") } } }
或者更简单,直接在项目根目录的gradle.properties里加一行:
kotlin.opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi
方法二:代码层面局部/全局标记
如果不想全局开启,也可以在代码里针对性标记:
- 单个函数上标记:
@OptIn(ExperimentalCoroutinesApi::class) fun yourCoroutineFunction() { // 用到ExperimentalCoroutinesApi的代码逻辑 }
- 整个文件生效(放在包声明之前):
@file:OptIn(ExperimentalCoroutinesApi::class) package com.your.package.name // 文件内所有使用该API的代码都不会再触发警告
- 整个类生效:
@OptIn(ExperimentalCoroutinesApi::class) class YourCoroutineClass { // 类内所有函数都可使用该API }
内容的提问来源于stack exchange,提问作者Rod
相关产品推荐
相关产品推荐

