You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KMM中@NativeCoroutine引发iOS构建失败,Opt-in问题待解决

解决KMP-NativeCoroutines插件iOS构建的Opt-in错误问题

问题原因

你使用的1.0.0-ALPHA-5版本KMP-NativeCoroutines插件生成的iOS绑定代码依赖了Kotlin的ExperimentalObjCName实验特性,该特性需要显式Opt-in才能使用。之前错误使用了ExperimentalObjCRefinement注解,导致无法解决问题。

解决方案

方案1:全局模块级Opt-in(推荐)

在KMM模块的build.gradle.kts(或build.gradle)中添加全局编译参数,一次性为所有代码启用该特性,无需在每个注解处单独添加:

Kotlin DSL(build.gradle.kts)写法

kotlin {
    // 仅为Native目标添加Opt-in参数
    targets.withType<org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget> {
        compilations.all {
            kotlinOptions {
                freeCompilerArgs += "-opt-in=kotlin.experimental.ExperimentalObjCName"
            }
        }
    }

    // 或为所有目标(含Android)全局配置,更简便
    compilerOptions {
        freeCompilerArgs.add("-opt-in=kotlin.experimental.ExperimentalObjCName")
    }
}

Groovy DSL(build.gradle)写法

kotlin {
    targets.withType(org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget) {
        compilations.all {
            kotlinOptions {
                freeCompilerArgs += "-opt-in=kotlin.experimental.ExperimentalObjCName"
            }
        }
    }

    // 或全局配置
    compilerOptions {
        freeCompilerArgs.add("-opt-in=kotlin.experimental.ExperimentalObjCName")
    }
}

方案2:代码局部Opt-in

如果不想全局启用,可在需要的类或属性上添加正确的Opt-in注解:

  1. 先导入必要注解:
import kotlin.OptIn
import kotlin.experimental.ExperimentalObjCName
  1. 在属性或类上配置:
// 单个属性单独添加
@OptIn(ExperimentalObjCName::class)
@NativeCoroutinesState
val flow: StateFlow<Long> = MutableStateFlow(5)

// 或在类级别添加,类内所有使用插件注解的元素自动生效
@OptIn(ExperimentalObjCName::class)
class NetworkService {
    @NativeCoroutinesState
    val flow: StateFlow<Long> = MutableStateFlow(5)
}

额外检查点

  • 确认插件应用正确:确保在根build.gradle中添加了插件依赖,并在common模块中应用了该插件。
  • 版本兼容性:1.0.0-ALPHA-5版本的插件建议搭配Kotlin 1.8.x版本使用,若Kotlin版本过低可能引发额外兼容性问题,可尝试同步插件与Kotlin版本。

内容的提问来源于stack exchange,提问作者Andrew Kolubov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:12:27