Вложенный пакет KMM указан неверно

Я пытаюсь использовать 2 пакета KMM внутри своего приложения для iOS, но на него неправильно ссылаются.

Вот моя структура зависимости:

      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 добавил слой абстракции к KmmPackageTwo в KmmPackageOne.

build.gradle KmmPackageOne

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

1 ответ

Решение

Если вы пытаетесь импортировать 2 Xcode Frameworks, которые были созданы с помощью Kotlin отдельно, вы не сможете этого сделать. Я только что ответил на аналогичный вопрос сегодня.

/questions/57518178/kak-sgenerirovat-framework-v-zavisimosti-ot-drugogo-s-pomoschyu-kotlinnative/57531856#57531856

Вам нужно создать 1 Xcode Framework, в котором есть все ваши модули Kotlin.

Другие вопросы по тегам