Kotlin 多平台如何工作?
前言
Kotlin 多平台功能非常有前途。而且,在本章节中,我们将了解 Kotlin 多平台是如何工作的?当我们知道它是如何工作的时候,我们就可以充分利用它。我喜欢花时间以艰难的方式学习这些困难的东西,然后与大家分享。让我们开始吧。
当我说 Kotlin Multiplatform 功能非常有前途时,背后有一个强有力的理由,Kotlin Multiplatform 让我们可以重用业务逻辑,并且不会对我们如何构建 App 的 UI 施加任何限制。所以,外表、行为和最重要的表现,都保持原生。原生 UI 有助于为客户提供最佳的用户体验。
当我们考虑仅针对 Android 和 iOS 两个平台的 Kotlin Multiplatform 时,我们编写一次在两个平台上运行的业务逻辑代码。
它是如何工作的?
首先,我们用 Kotlin 编写共享代码。对于 Android,它被转换为可以在 JVM 中执行的 Java 字节码。因此,已经拥有虚拟机 (VM) 的 Android 可以轻松运行它。
但是 iOS 呢,它怎么能运行 Kotlin 呢?我们可以在没有虚拟机(VM)的情况下做到这一点吗?你有没有想过它是如何工作的?
对于 iOS,必须将 Kotlin 代码转换为框架内的源代码(iOS 上可执行的本机代码)。该源代码适用于 iOS。
Kotlin 代码如何转换为能够在 iOS 上运行的源代码?
Kotlin 编译器出现了。它有以下两部分:
- 前端- 它将 Kotlin 代码转换为 IR(中间表示)。该 IR 能够使用下面描述的后端转换为机器可执行的本机代码。
- 后端- 它将 IR 转换为机器可执行的本机代码。这是可能的,因为 JetBrains 构建了 Kotlin/Native 基础设施。基本上,对于 Android,它将 IR 转换为 Java 字节码,对于 iOS,它将 IR 转换为 iOS 本机机器可执行代码。
需要注意的是,我们能够在没有虚拟机 (VM) 的情况下在 iOS 等平台上运行用 Kotlin 编写的共享业务逻辑代码。
在这里,Kotlin/Native 扮演着重要的角色。Kotlin/Native 到底是什么?
来自官方文档:
Kotlin/Native是一个 LLVM 后端,用于 Kotlin 编译器、运行时实现和使用 LLVM 工具链的本机代码生成工具。
Kotlin/Native 的主要设计目的是允许在不需要或不可能使用虚拟机的平台上进行编译(例如 iOS 或嵌入式目标),或者开发人员愿意生成大小合理的自包含程序而无需发布额外的执行运行时。
现在,下一个问题出现在我们脑海中,什么是 LLVM?
我们可以说 LLVM 是一个用于从中间表示(IR)以编程方式创建机器本机代码的库。
我们首先创建 LLVM 所需的中间表示(IR),然后 LLVM 发挥它的魔力。
概括:
Kotlin 代码 > 中间表示 (IR) > 机器可执行本机代码。
这样,Kotlin Multiplatform 就可以工作了。
作者:Amit Shekhar
链接:https://blog.mindorks.com/how-does-the-kotlin-multiplatform-work