M1 Mac下KMM项目导出iOS Framework遇Cocoapods相关报错如何解决?
问题修复方案
1. Gradle Sync执行pod install失败修复
Gradle调用CocoaPods时不会加载终端的全局源配置,必须在Podfile头部显式声明官方源,修改Podfile如下:
source 'https://cdn.cocoapods.org' platform :ios, '14.0' use_frameworks! target 'Sample App' do pod 'sharedCode', :path => '/Users/User/Developments/KotlinMultiplatform/sharedCode' end
修改后重新执行Gradle Sync即可解决pod install报错问题。
2. :sharedCode:linkPodDebugFrameworkIosArm64任务失败修复
该报错由两个配置问题共同导致:
- 冗余的自导出配置:当前模块本身就是要打包的
sharedCode,不需要额外写export(project(":sharedCode")),直接删除这行配置即可。 - 依赖声明和导出规则冲突:你开启了
transitiveExport = true,该配置会把所有模块依赖都导出到iOS Framework的头文件中暴露给Swift调用,但commonMain里的依赖都用了implementation关键字声明,implementation属于模块内部依赖,不会对外暴露,和导出规则冲突。
有两种解决方案二选一即可:- 如果你需要把这些Kotlin依赖的API暴露给Swift侧调用,把
commonMain中对应依赖的implementation改为api:val commonMain by getting { dependencies { api("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0-RC") api("org.jetbrains.kotlinx:kotlinx-datetime:0.2.1") api("com.soywiz.korlibs.klock:klock:2.2.2") api("com.ionspin.kotlin:bignum:0.3.2") } } - 如果你不需要把这些依赖的API暴露给Swift侧,直接删除
transitiveExport = true配置即可,不需要修改依赖声明。
- 如果你需要把这些Kotlin依赖的API暴露给Swift侧调用,把
修改完成后清理项目重新构建即可解决报错。
内容的提问来源于stack exchange,提问作者Foster
相关产品推荐
相关产品推荐

