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

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构建,问题依旧

可行解决方案

  1. 调整框架导出配置
    如果MainViewControllerKt依赖其他模块代码,需将transitiveExport设为true,确保动态框架导出所有依赖符号:

    framework {
        baseName = "ComposeApp"
        isStatic = false
        transitiveExport = true
    }
    
  2. 统一Pod名称与框架baseName
    确保Podfile中的Pod名称和baseName大小写、路径匹配,避免文件系统路径大小写问题:

    target 'iosApp' do
      use_frameworks!
      platform :ios, '16.2'
      pod 'ComposeApp', :path => '../composeApp'
    end
    
  3. 确认Kotlin代码可见性
    Kotlin默认成员为internal,iOS端无法访问,需将MainViewControllerKt中的函数/类声明为public:

    public fun MainViewController.setContent() { 
        // 实现代码
    }
    
  4. 重新生成Podspec并更新依赖
    在项目根目录执行:

    ./gradlew :composeApp:podspec
    

    确保生成的.podspec包含所有必要依赖后,重新运行pod install。

  5. 检查Xcode框架导入与调用
    在iOS项目的MainViewController.swift中,确保正确导入框架并拼写调用方法:

    import ComposeApp
    
    // 调用示例
    MainViewControllerKt.setContent(self)
    

内容的提问来源于stack exchange,提问作者mohammad fakhraee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:08:21