【问题标题】:KMM with Java sources in common (shared) moduleKMM 与 Java 源代码通用(共享)模块
【发布时间】:2021-09-12 14:47:31
【问题描述】:

作为平台限制,我们不能在 Kotlin Multiplatform Mobile 中使用 Java 源代码。

但如果 Kotlin 与 Java 100% 兼容,为什么我们不能将 Java 与 Kotlin Multiplatform Mobile 一起使用?我的意思是不仅在 Android 或 JVM 部分中使用它,而且在共享代码的公共部分中使用它。我们可以用 Java 编写 iOS 应用程序 :)

【问题讨论】:

  • Kotlin 与 java 应用程序中的 java 兼容,但如果你例如编译成JS,不能用java。多平台意味着它应该适用于多个平台(不仅仅是 JVM)。

标签: java kotlin kotlin-multiplatform kotlin-multiplatform-mobile kmm


【解决方案1】:

Kotlin/JVM 确实可以与 Java 互操作,但是 KMM 有两个目标:Native 和 Android。这意味着在通用代码中,您只能使用可由 Kotlin/JVM 和 Kotlin/Native 编译器编译的依赖项。

在您的情况下,当尝试在您的公共代码中添加 java 依赖项时,Kotlin/Native 将不知道如何将其转换为 iOS。

您可以做的是使用 expect/actual 抽象出 JVM 部分,并为 Kotlin/Native 编译器提供一个它可以理解的实现,但是您将无法使用任何 Java 库。

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 2015-02-07
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 2021-04-16
    • 2022-10-06
    相关资源
    最近更新 更多