kotlin MPP 与 Kotlin Native 有啥不同?
Posted
技术标签:
【中文标题】kotlin MPP 与 Kotlin Native 有啥不同?【英文标题】:Is kotlin MPP different than Kotlin Native?kotlin MPP 与 Kotlin Native 有什么不同? 【发布时间】:2021-09-07 06:00:20 【问题描述】:我在线阅读了多个内容,但仍然无法理解 Kotlin 多平台移动端与 Kotlin Native 之间有明显区别吗?
【问题讨论】:
【参考方案1】:是的。
Kotlin/Native 是Kotlin target platforms 的一种。对于这个平台,Kotlin 代码被编译成 LLVM 中间表示,并最终编译成本机二进制文件。从技术上讲,有多个原生目标,因为您可以针对 Windows、Linux、MacOS、ios 等进行编译。
但是,还有其他目标平台,例如 JVM、javascript、android 和 WebAssembly。
Kotlin/MPP (multiplatform project) 更普遍地是指编译到几个不同目标平台的项目。例如,可以将单个项目编译为 JVM、JS 和一个或多个本机目标。 在某种程度上,如果 Kotlin/Native 项目编译到不同的原生目标,则可以认为它是多平台的,但通常“多平台项目”也意味着除原生目标之外的其他目标。
KMM (Kotlin Multiplatform Mobile) 是多平台项目的一个特定案例,其目标是 Android 和 Native iOS。 KMM 项目的 iOS 部分使用 Kotlin/Native,而不是 Android 部分(除非它使用特殊的 Android NDK 目标)。
【讨论】:
@Joffery,谢谢!它澄清了我的大部分疑问。 只是补充一点,到目前为止,WebAssembly 仍然是原生目标之一,未来单独的 WebAssembly 目标仍在开发中。 @thoutbeckers 正确,我只是想让帖子保持简单(并且有点面向未来:))以上是关于kotlin MPP 与 Kotlin Native 有啥不同?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Kotlin 同时定位 JVM/Native 和 Android
如何在 Kotlin Multiplatform(纯 kotlin)中进行延迟
无法在 Kotlin Multiplatform 项目中引用 kotlinx.cinterop 包
KotlinKotlin 语言简介 ( Kotlin 语言发展 | Kotlin 语言与 Java 虚拟机 | Java 与 Kotlin 联系 | Kotlin 跨平台特性 )