【问题标题】:Android Kotlin with Native NDK C Code into WebAssembly with Kotlin Multiplatform带有原生 NDK C 代码的 Android Kotlin 与 Kotlin Multiplatform 的 WebAssembly
【发布时间】:2022-01-03 15:16:02
【问题描述】:

作为一个完整的 Kotlin Multiplatform 新手,我想知道是否有办法导出(部分)由 Kotlin 代码和 C 组成的现有 Android 应用程序strong> 代码(OpenCV 图形和自己的过滤器和分析,通过 Android NDK/JNI)使用 Kotlin Multiplatform 到其他平台(在我们的例子中是 WebAssembly)。

在尝试设置时,我被“System.loadLibrary("native-lib")”部分卡住,无法从 Kotlin 代码加载本机库。其他平台没有“系统”之类的东西,因为它是 Android 的东西。 其他平台上的等价物是什么,或者是否有更独立于平台的方式来加载 C 库?这是完全错误的方法吗?

【问题讨论】:

    标签: kotlin webassembly kotlin-multiplatform


    【解决方案1】:

    对于 iOS,或更一般而言,任何 Kotlin/Native 平台,您都可以使用 KMP 执行此操作,但您需要更改 2 方相互通信的方式。 Kotlin/Native 从 Kotlin/Native 可以调用的 C 头文件生成互操作代码,但它与 Kotlin/JVM 与 JNI 对话的方式不同(例如,System.loadLibrary 仅适用于 JVM,不会为 WASM 或 Kotlin/ 调用原生)。

    在 Kotlin/Native 中支持 WASM,但团队已经放弃了这一点,转而支持一个全新的 WASM 编译器。最近有一个技术预览,但我想让 Kotlin/WASM 与 C/WASM 互操作所需的工作很重要,而且仍待定。您可能对较旧的 Kotlin/Native WASM 目标有更好的运气,因为它可能支持 Kotlin/Native 的 cinterop,但我想这将相当困难,特别是如果您是 KMP 的新手(我怀疑目前不可能,但我可能错了)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 2022-09-23
      • 2020-04-28
      • 1970-01-01
      • 2020-01-12
      • 2019-12-31
      • 2021-02-22
      相关资源
      最近更新 更多