赞
踩
本文是一篇浅显的kmm 学习总结,希望对kotlin multiplatform mobile(下面简称kmm)的功能、支持平台、适用场景、使用方法、优缺点等有一个初步的认知和理解。
Kotlin Multiplatform Mobile (KMM) 是一个 SDK,允许您在 iOS 和 Android 应用程序中使用相同的业务逻辑代码。
两个关键字:SDK、共享业务逻辑代码
应用程序的 Android 和 iOS 版本通常有很多共同点,但也会有很大不同 – 尤其在 UI 方面。
同时,应用程序的业务逻辑,包括数据管理、分析和认证等功能,往往是相同的。
因此,标准操作是跨平台共享应用程序的某些部分,同时保持其他部分完全相互独立。
通过 KMM,您可以获得这种灵活性,并保留原生编程的优势。
将单个代码库用于 iOS 和 Android 应用的业务逻辑,只在实施原生 UI 有必要时或使用平台特定 API 时编写平台特定代码。
在官方提供的获取平台版本号、进行算数运算、网络数据I/O的案例可以看出:
(1). 向不同的平台提供一致的api接口;
(2). 共享的业务逻辑统一由kotlin编写,android直接使用,而iOS作为framework依赖为静态库后通过编写swift代码,调用暴露的API使用
(3). 各自的UI由各自实现
Platform | preset | comments |
---|---|---|
kotlin/jvm | jvm | |
kotlin/js | js | Select the execution environment: – browser {} for applications running in the browser. – nodejs{} for applications running on Node.js. |
Android application/library |
androidNativeArm32 androidNativeArm64 |
Manually apply an Android Gradle plugin – com.android.application or – com.android.library. You can only create one Android target per Gradle subproject. |
Android NDK | androidNativeArm32 androidNativeArm64 |
The 64-bit target requires a Linux or macOS host. You can build the 32-bit target on any supported host. |
iOS | iosArm32 / iosArm64 iosX64 |
Requires a macOS host. |
tvOS | tvOSArm64 / tvOSX64 | |
watchOS | watchosArm32 / watchosArm64 / watchosX86 | |
macOS | macosX64 | Requires a macOS host. |
Linux | linuxArm64 / linuxArm32Hfp linuxMips32 / linuxMipse32 linuxX64 |
Linux MIPS targets (linuxMips32 and linuxMipsel32) require a Linux host. You can build other Linux targets on any supported host. |
Windows | mingwX64 / mingwX86 | Requires a Windows host. |
WebAssembly | wasm32 |
支持的平台比较多,几乎覆盖了市场所有主流平台
Project:
|-- androidApp: 安卓应用工程文件
|-- iosApp: iOS应用工程文件
|-- shared: 共享代码文件
|-- …
|-- commonMain: 共享逻辑
|-- androidMain: 需要由android实现的expect
|-- iosMain: 需要由ios实现的expect的kotlin代码
|-- commonTest: 多平台测试
|-- androidTest:
|-- iosTest:
|-- …
Kotlin/Native 是一种将 Kotlin 代码编译为无需虚拟机就可运行的原生二进制文件的技术。 它是一个基于 LLVM 的 Kotlin 编译器后端以及 Kotlin 标准库的原生实现。
kotlin/Native 弥补了无需虚拟机或者运行时的自包含程序的使用场景,这是什么意思呢?因为从Android Mobile Application的角度来看问题,Android 应用时运行在JVM虚拟机上的,kotlin代码在Android平台上最终也会编译成jar的形式在JVM中执行,并且有Android Runtime的概念,而iOS是没有这些概念的,可以理解为kotlin/Native 在移动开发上是为了适应iOS编程的一种技术实现。
具体有些什么?
a. 支持那些?
似乎和kmm所能支持的一样,因为是由kn实现的,所以一样
b. 互操作:
kotlin/Native 可以
// shared/build.gradle.kts plugins { kotlin("multiplatform") } kotlin { android() ios() { binaries { framework { baseName = "shared" }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。