在范围内找不到 "Greeting"

Cannot find "Greeting" in scope

我在 Android Studio 中构建了一个 KMM 项目,但 ios 应用程序似乎看不到来自共享模块的 classes。最初它工作得很好,但现在我修改了共享模块中的一些 classes,出现错误。

我的项目结构是这样的:

如您所见,平台 class 中存在一些编译错误,但 android 应用程序运行正常。错误显示““多平台项目”功能是实验性的,应明确启用”。

ios 应用程序如下所示:

稍后编辑:

很显然,当我在公共源集中的 shared.build.gradle 中添加此依赖项时,我发现我遇到了这个错误:

        val commonMain by getting {
            dependencies {
//                implementation("io.ktor:ktor-client-core:$ktorVersion")
//                implementation("io.ktor:ktor-client-okhttp:$ktorVersion")
//                implementation("io.ktor:ktor-client-json:$ktorVersion")
//                implementation("io.ktor:ktor-client-serialization-jvm:$ktorVersion")
            }
        }

我需要这些依赖项来向我的 ktor 服务器发出请求。

更新:所以问题是我在公共集中添加了一些库,而这些库没有多平台支持。

第一次构建 iOS 应用程序时,您可能需要 cd iosApp && pod install

如果 Xcode 错误只是出现在源代码中,但您实际上并没有尝试构建它,则需要尝试“构建”项目。这将触发 Kotlin 到 运行,这将在共享 header 中生成 Greeting 的声明,swift 可以看到。

本质上,当您更改 Kotlin 时,Xcode 无法立即看到这些更改,因此如果您编写代码,将会出现错误。

我假设“最初它运行良好”是准确的,在这种情况下,您可能只需要重新运行 构建。关于 The feature "multi platform projects" is experimental and should be enabled explicitly 的部分是我看到的消息,但我认为是警告。我认为不需要在任何地方启用它,除非您可能将警告配置为被视为错误。不过,我已经有一段时间没有设置新项目了,所以可能 copy/paste 设置了一些我不知道的东西。

所以问题是我在公共集中添加了一些库,而这些库没有多平台支持。应该多注意一下。

我创建了一个新的 KMM 默认应用程序并选择了 cocoapods 选项。在 Android Studio 中,我打开了 iosApp.xcodeproj - 这就是我收到错误的原因。

相反,我不得不打开 iosApp.xcworkspace。通过另外 运行ning cd iosApp && pod install 我能够从 Xcode.

构建和 运行 应用程序