当前位置:   article > 正文

kotlin multiplatform mobile初探_kotlin bundle js

kotlin bundle js

kotlin multiplatform mobile programing 的探索

本文是一篇浅显的kmm 学习总结,希望对kotlin multiplatform mobile(下面简称kmm)的功能、支持平台、适用场景、使用方法、优缺点等有一个初步的认知和理解。

一、什么是kmm?

1.1 引用9月15日 kmm发布alpha版本时的一句话:

Kotlin Multiplatform Mobile (KMM) 是一个 SDK,允许您在 iOS 和 Android 应用程序中使用相同的业务逻辑代码。

两个关键字:SDK共享业务逻辑代码

1.2 详细描述

应用程序的 Android 和 iOS 版本通常有很多共同点,但也会有很大不同 – 尤其在 UI 方面。
同时,应用程序的业务逻辑,包括数据管理、分析和认证等功能,往往是相同的。
因此,标准操作是跨平台共享应用程序的某些部分,同时保持其他部分完全相互独立。
通过 KMM,您可以获得这种灵活性,并保留原生编程的优势。
将单个代码库用于 iOS 和 Android 应用的业务逻辑,只在实施原生 UI 有必要时或使用平台特定 API 时编写平台特定代码。

在官方提供的获取平台版本号、进行算数运算、网络数据I/O的案例可以看出:

(1). 向不同的平台提供一致的api接口;
(2). 共享的业务逻辑统一由kotlin编写,android直接使用,而iOS作为framework依赖为静态库后通过编写swift代码,调用暴露的API使用
(3). 各自的UI由各自实现

二、km支持的平台

2.1 支持的平台

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

支持的平台比较多,几乎覆盖了市场所有主流平台

2.2 工程结构

在这里插入图片描述

Project:
 |-- androidApp:   安卓应用工程文件
 |-- iosApp:        iOS应用工程文件
 |-- shared:     共享代码文件
 |-- …
   |-- commonMain:   共享逻辑
   |-- androidMain:   需要由android实现的expect
   |-- iosMain:       需要由ios实现的expect的kotlin代码
   |-- commonTest:      多平台测试
   |-- androidTest:
   |-- iosTest:
   |-- …

三、kmm的基本原理

3.1 Kotlin Native

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 可以

  • 用于多个平台的可执行文件
  • 用于 C/C++ 项目的静态库或动态库以及 C 语言头文件
  • 用于Swift 与 Objective-C 项目的 Apple Framework
// shared/build.gradle.kts
plugins {
   
    kotlin("multiplatform")
}

kotlin {
   
  android()
  ios() {
   
    binaries {
   
      framework {
   
        baseName = "shared"
      }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号