androidioskotlinkotlin-multiplatform

Kotlin Multiplatform: cannot find 'MainViewControllerKt' in scope MainViewControllerKt.MainViewController()


I've updated my multi-module KMP project to use cocoapods according to kotlinlang. But after syncing, building, and running the ios app (either using Android Studio or Xcode 16.2), I encounter the following error:

enter image description here

Inside build.gradle.kts of :composeApp module, I've added the following code:

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.
        }
    }
}

And Podfile inside iosApp directory looks like this:

target 'iosApp' do
  use_frameworks!
  platform :ios, '16.2'
  pod 'composeApp', :path => '../ComposeApp'
end

What I have already tried:

  1. Invalidating cache & restart
  2. Cleaning the project and making it again
  3. Running pod deintegrate then pod install again
  4. The solution said here: Open file *.xcworkspace, then building using ⌘+B (which leads to build failure)

Solution

  • The issue is with room's config for IOS. By adding the following line in framework block inside cocoapods block, the build is successfull:

    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.
                linkerOpts.add("-lsqlite3") // I had to add this line
            }
        }
    }