【问题标题】:Nested KMM Package Not referenced correctly嵌套 KMM 包未正确引用
【发布时间】:2021-07-28 04:27:37
【问题描述】:

我试图在我的 iOS 应用程序中使用 2 个 KMM 包,但它没有被正确引用。

这是我的依赖结构:

iOSApp
 + KmmPackageOne
 + KmmPackageTwo

KmmPackageOne
 + KmmPackageTwo

这是我尝试在 iOSApp 中使用的示例文件

// In KmmPackageOne, class Foo.kt
class Foo {
  fun bar() { ... }
}

// In KmmPackageTwo, class Buzz.kt
class Buzz(
  private val foo: Foo
) {
  ...
}

将它们添加到iOS应用程序时,它不明白参数foo来自KmmPackageOne

// in swift class
...
val buzz = Buzz(foo: Foo())

抛出以下错误

Argument type `Foo` does not conform to expected type `KPTFoo`

我假设 KPT 表示 KmmPackageTwo。所以看起来 XCode 给 KmmPackageOne 中的 KmmPackageTwo 增加了一层抽象。

KmmPackageOne 的build.gradle

    sourceSets {
        commonMain {
            kotlin.srcDir('src/commonMain/kotlin')
            dependencies {
                implementation("locationOf:KmmPackageTwo:+")
            }
        }

【问题讨论】:

    标签: swift kotlin kotlin-multiplatform kotlin-multiplatform-mobile kmm


    【解决方案1】:

    如果您尝试导入分别使用 Kotlin 构建的 2 个 Xcode 框架,则不能这样做。我今天刚回答了一个类似的问题。

    https://stackoverflow.com/a/67403855/227313

    您需要构建 1 个包含所有 Kotlin 模块的 Xcode 框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 2018-03-18
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多