Ответ
Нет, напрямую использовать Swift-библиотеки в Kotlin Multiplatform (KMP) нельзя. Однако есть несколько обходных путей:
- Kotlin/Native с Objective-C: Можно использовать Swift-библиотеки через Objective-C-обёртки, так как Kotlin/Native поддерживает взаимодействие с Objective-C.
// Объявление внешней Objective-C функции
@ObjCName("MySwiftLibraryWrapper")
external fun swiftFunction(): String
-
C-интерфейсы: Если библиотека предоставляет C-интерфейсы, можно использовать их через
cinterop. -
Собственные реализации: Для кроссплатформенной логики лучше писать общий Kotlin-код, а платформенно-специфичные части реализовывать отдельно через
expect/actual.
// Общий интерфейс
expect fun platformSpecificFunction()
// iOS реализация
actual fun platformSpecificFunction() {
// Вызов Swift-кода через обёртки
}
Лучше избегать прямого использования Swift в KMP и проектировать архитектуру с учётом мультиплатформенности.