在共享模块中使用Java源代码的KMM

7
作为平台限制,我们无法在Kotlin Multiplatform Mobile中使用Java源代码。
但是如果Kotlin与Java完全兼容,为什么我们不能在Kotlin Multiplatform Mobile中使用Java?我的意思是不仅在Android或JVM部分使用它,而且在具有共享代码的公共部分中也可以使用。我们可以使用Java编写iOS应用程序 :)

2
Kotlin与Java在Java应用程序中兼容,但如果您将其编译为JS,则无法使用Java。 多平台意味着它应该适用于多个平台(不仅限于JVM)。 - dan1st
1个回答

12

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接