KMM中的@NativeCoroutine在具有选择性加入要求的iOS构建中失败

ccrfmcuu  于 2023-04-08  发布在  iOS
关注(0)|答案(1)|浏览(191)

我在KMM项目中添加了一个KMP-NativeCoroutines插件:
id("com.rickclephas.kmp.nativecoroutines") version "1.0.0-ALPHA-5"
当我将@NativeCoroutinesState@NativeCoroutines注解添加到我的流/函数时,iOS构建开始失败,并

  • 此声明需要opt-in。其用法必须标记为'@Kotlin.experimental.ExperimentalObjCName'或'@OptIn(kotlin.experimental.ExperimentalObjCName::class)'*

当我将@OptIn(kotlin.experimental.ExperimentalObjCName::class)添加到流的顶部时

@OptIn(kotlin.experimental.ExperimentalObjCName::class)
    @NativeCoroutinesState
    val flow: StateFlow<Long> = MutableStateFlow(5)

我收到错误

  • 此类只能用作@OptIn的注解或参数 *

向我的类添加opt-in注解

@OptIn(kotlin.experimental.ExperimentalObjCRefinement::class)
class NetworkService {

不会改变我收到的错误:

  • 此类只能用作@OptIn的注解或参数 *

任何想法,我应该在哪里挖掘修复?Android应用程序工作正常.

odopli94

odopli941#

生成的代码中可能需要OptIn。您可以使用Module-wide Opt-in来解决这个问题。
对于您的Kotlin多平台项目,您需要添加

sourceSets {
    all {
        languageSettings.optIn("kotlin.RequiresOptIn")
        languageSettings.optIn("kotlin.experimental.ExperimentalObjCName")
    }

    val commonMain by getting { //...
    //...
}

相关问题