如何在 kotlin native 中使用 swift 库?

Posted

技术标签:

【中文标题】如何在 kotlin native 中使用 swift 库?【英文标题】:How to use a swift library in kotlin native? 【发布时间】:2020-06-26 22:21:31 【问题描述】:

如何在 Kotlin/Native 中使用 Swift 库?

我在Kotlin/Native 中尝试使用 cinteropt 使用 Objective-c 库,但我似乎无法弄清楚如何使用 swift 库?

有人可以在这里指导我吗?提前致谢。

【问题讨论】:

首先,你的 swift 库是哪个扩展?如果.so 库针对设备架构(arm-abi、x86-64 等)并使用 C++ JNI 绑定(使用库中的原始头文件)来调用它,那么您实际上可以使用它们。但是你将主要使用 C++ 编程而不是 Kotlin 对不起,我的回答是针对 android 目标的,但也许我的评论可以启发您的搜索 它实际上让我更加困惑。请帮帮我。我想使用 swift 库的唯一原因是我可以将它用于我的 ios 目标。而已。具体来说,我正在尝试为钥匙串使用 swift 库包装器,这样我就可以创建一个库,该库在 ios 中使用 Keychain,在 Android 中使用 Encrypted SharedPreference。对于 Android,这很容易,但我不知道如何使用 swift 来完成。 【参考方案1】:

您不能直接与 Swift 进行互操作,除非 Swift 设计为供 Objective-C 使用。我假设 Keychain 库具有可用的 Objective-C 绑定,您应该能够与之互操作。如果没有,您可以编写某种封装器来公开 Objective-C 接口,或者编写 Kotlin 接口并在 Swift 中实现它,然后将其传递给共享代码。

【讨论】:

如果一个库已经使用 @objC 公开了它的 api,生成它的二进制文件是否允许它与 Kotlin/Native 互操作?或者是否需要采取其他步骤才能使其发挥作用?

以上是关于如何在 kotlin native 中使用 swift 库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kotlin Native 中使用 Http Request 库

Kotlin/Native 垃圾收集器如何在 C 中工作?

Kotlin Multiplatform Mobile:Ktor - 如何在 Kotlin Native(iOS)中取消活动协程(网络请求、后台工作)?

如何使用 Kotlin/native 生成​​依赖于另一个的 .framework?

使用来自 Kotlin/Native 和 Gradle 的 Apple 依赖项,更具体地说是 SwiftUI

在 Kotlin Native 中,如何在不使用 C 指针的情况下将对象保留在单独的线程中,并从任何其他线程中改变其状态?