KMP集成CocoaPods后iOS端报错:找不到MainViewControllerKt
多模块KMP项目转CocoaPods后iOS端找不到
MainViewControllerKt 按照kotlinlang官方文档将多模块KMP项目升级为使用CocoaPods后,同步、构建并运行iOS应用(Android Studio或Xcode 16.2)时,出现错误:找不到作用域中的'MainViewControllerKt'。
配置信息
:composeApp模块的build.gradle.kts配置:
kotlin { cocoapods { summary = "Some description for the Shared Module" homepage = "Link to the Shared Module homepage" version = "1.0" ios.deploymentTarget = "16.2" podfile = project.file("../iosApp/Podfile") framework { baseName = "ComposeApp" isStatic = false transitiveExport = false // This is default. } } }
iosApp目录下的Podfile内容:
target 'iosApp' do use_frameworks! platform :ios, '16.2' pod 'composeApp', :path => '../ComposeApp' end
已尝试的解决方案
- 清除缓存并重启IDE
- 清理项目后重新构建
- 执行
pod deintegrate后再运行pod install - 打开
*.xcworkspace后按⌘+B构建,问题依旧
可行解决方案
调整框架导出配置
如果MainViewControllerKt依赖其他模块代码,需将transitiveExport设为true,确保动态框架导出所有依赖符号:framework { baseName = "ComposeApp" isStatic = false transitiveExport = true }统一Pod名称与框架baseName
确保Podfile中的Pod名称和baseName大小写、路径匹配,避免文件系统路径大小写问题:target 'iosApp' do use_frameworks! platform :ios, '16.2' pod 'ComposeApp', :path => '../composeApp' end确认Kotlin代码可见性
Kotlin默认成员为internal,iOS端无法访问,需将MainViewControllerKt中的函数/类声明为public:public fun MainViewController.setContent() { // 实现代码 }重新生成Podspec并更新依赖
在项目根目录执行:./gradlew :composeApp:podspec确保生成的
.podspec包含所有必要依赖后,重新运行pod install。检查Xcode框架导入与调用
在iOS项目的MainViewController.swift中,确保正确导入框架并拼写调用方法:import ComposeApp // 调用示例 MainViewControllerKt.setContent(self)
内容的提问来源于stack exchange,提问作者mohammad fakhraee
相关产品推荐
相关产品推荐

