如何配置KMM使Swift协议仅保留Completion Handler形式?
KMM配置:仅为suspend接口生成Completion Handler形式
可以通过配置Kotlin/Native的编译器参数,让共享模块生成的iOS框架只保留Completion Handler形式的suspend函数接口,具体操作如下:
- 在共享模块的
build.gradle.kts(或Groovy版的build.gradle)中,找到iOS目标的框架配置,添加对应的编译器参数:
kotlin { ios { binaries { framework { // 保留你的原有框架配置(比如baseName等) freeCompilerArgs += "-Xobjc-generate-async-from-suspend=disable" } } } // 其他平台目标配置... }
- 这个
-Xobjc-generate-async-from-suspend=disable参数会直接禁用Kotlin/Native自动从suspend函数生成async/await形式的Swift接口,重新构建项目后,iOS端的协议就只会包含Completion Handler版本的函数,无需再实现async版本。
如果使用的是较旧版本的KMM,可替换为-Xobjc-async-from-suspend=disable参数,效果一致。
内容的提问来源于stack exchange,提问作者marek.pivovarnik
相关产品推荐
相关产品推荐

