Вложенный пакет 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 отдельно, вы не сможете этого сделать. Я только что ответил на аналогичный вопрос сегодня.
Вам нужно создать 1 Xcode Framework, в котором есть все ваши модули Kotlin.