移动端跨平台方案Kotlin Multiplatform

一.移动端跨平台方案

1.1开发背景

  • 基础模块逻辑相对复杂,多端研发成本高
  • 双端逻辑代码膨胀,无法保证完全一致,问题排查难
  • 逻辑代码穿插在各个模块中,现有跨端复用方案迁移成本高

1.2跨平台方案

1.3 选择KMM

场景:

  • UI很不重要或者UI很重要,交互复杂对性能要求很高,原生UI是第一选择
  • 有很多可收拢的逻辑层面代码
  • 已有代码,重点考虑迁移成本
  • 考虑学习成本和更轻量化的方案
  • 注重性能
  • 注重原生能力的融合,不要桥接

KMM可以做

  • Android 的开发语言koltin语言开发来开发Android/iOS的共享库
  • 更贴合 Android & iOS 平台。Android 平台产物 aar,iOS 平台使用 Kotlin Native 编译,产物 framework
  • 与平台无关的 common 逻辑可以跨更多的平台,如 Mac、Linux、Windows、Web 等

二.KMM介绍

2.1什么是KMM

_KMM(Kotlin Multiplatform Mobile)_是一个用于跨平台移动开发的 SDK。借助 KMM,您可以开发多平台移动应用程序,并在 Android 和 iOS 之间共享部分应用程序,例如核心层、业务逻辑、表示逻辑等。

KMM 使用Kotlin的多平台功能和专为移动开发设计的功能,使用 Android Studio的Kotlin Multiplatform Mobile (KMM) 插件可帮助您开发适用于 Android 和 iOS 的应用程序。

2.2什么是KMM插件?

适用于 Android Studio的Kotlin Multiplatform Mobile (KMM) 插件可帮助您开发适用于 Android 和 iOS 的应用程序。

使用KMM插件,你可以。

  • 直接从Android Studio在iOS目标上运行、测试和调试你应用程序的iOS部分。

  • 快速创建一个新的多平台项目。

  • 将一个多平台模块添加到现有项目中。

KMM插件只在MacOS上工作。这是因为按照苹果的要求,iOS模拟器只能在macOS上运行,而不能在其他任何操作系统上运行,如微软的Windows或Linux。

2.3什么是Kotlin/Native,它与KMM有什么关系?

Kotlin/Native是一种将 Kotlin 代码编译为原生二进制文件的技术,它可以在没有虚拟机的情况下运行。它由基于LLVM的 Kotlin 编译器后端和 Kotlin 标准库的本机实现组成。

Kotlin/Native主要是为了允许在不希望或不可能使用虚拟机的平台上进行编译,如嵌入式设备和iOS。它特别适用于开发者需要制作一个不需要额外的运行时或虚拟机的独立程序的情况。而这正是iOS开发中的情况。

用Kotlin编写的共享代码,用Kotlin/JVM为Android编译成JVM字节码,用Kotlin/Native为iOS编译成本地二进制文件。这使得在这两个平台上与KMM的集成是无缝的。

三.KMM搭建

3.1代码工程结构

使用KMM插件默认创建目录结构

  • AndroidApp 应用代码
  • iosAPP 应用代码
  • Android&ios的共享公共代码
  • Android平台差异代码
  • ios平台差异代码

3.2ios运行

  • ios运行除了可以用xcode运行外,也可以直接通过Android studio 插件直接运行
  • 通过Android studio 插件运行,必须是苹果系统

3.2iosApp编译kotlin共享库

cd “$SRCROOT/…” ./gradlew :shared:embedAndSignAppleFrameworkForXcode注意顺序,要将Run Script脚本放到 Complie Souces前面

3.3iosApp依赖共享库生成的Framework

Build Settings选项卡上,切换到All build settings 并在Search Paths下指定Framework Search Path ( S R C R O O T ) / . . / s h a r e d / b u i l d / x c o d e − f r a m e w o r k s / (SRCROOT)/../shared/build/xcode-frameworks/ (SRCROOT)/../shared/build/xcodeframeworks/(CONFIGURATION)/ ( S D K N A M E ) ! [ ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / i m g c o n v e r t / 755 f d 143 a 670828633131 a c f 38 f 6072 e . p n g ) 在 ∗ ∗ B u i l d S e t t i n g s 选项卡上,在 L i n k i n g ∗ ∗ 下指定 ∗ ∗ O t h e r L i n k e r 标志 ∗ ∗ : (SDK_NAME)![](https://img-blog.csdnimg.cn/img_convert/755fd143a670828633131acf38f6072e.png)在**Build Settings选项卡上,在Linking**下指定**Other Linker 标志**: (SDKNAME)![](https://imgblog.csdnimg.cn/imgconvert/755fd143a670828633131acf38f6072e.png)BuildSettings选项卡上,在Linking下指定OtherLinker标志(inherited) -framework shared3.4运行
3.5 代码分析

3.6 共享库能力扩展

共享库想要扩展,引用一些第三方库的能力也很方便

  • Android非常简单的,和普通 Android 开发没有区别,只要通过 gradle 引入需要的库,就可以调用里面的代码。

  • iOS 则是通过 cinterop 这个能力生成 Kotlin 识别的三方库头文件实现能力调用的。 使用了 Kotlin CocoaPods 插件。引入一个三方库,最终通过cinterop生成 klib 文件,里面包含了导出的头文件函数(knm 文件),最后代码里 import 进来就可以直接使用了。

四.KMM展望

4.1遇到问题

iOS平台调试问题

使用 Android Studio 执行在 iOS 上一步编译的 Kotlin Multiplatform Mobile 代码时,可能很难找到变量的值。此外,我们目前只能通过打印日志进行调试。随着 iOS 项目的增长,编译速度也逐渐变慢,这会影响 iOS 调试的效率。

Kotlin Native 多线程问题

Kotlin Native 对多线程之间的对象共享有非常严格的内存模型,要求冻结多线程之间共享的所有变量。在研究 Kotlin Multiplatform Mobile 技术的早期阶段,我们经常被InvalidMutabilityException.

什么是 Kotlin 多平台移动 (KMM)?

Kotlin Multiplatform Mobile 是一个用于 iOS 和 Android 应用程序开发的 SDK。它提供了创建跨平台和本机应用程序的所有综合优势。

它受到许多世界领先公司的信任,包括飞利浦、Netflix、Leroy Merlin 和 VMWare。

应用程序逻辑的单一代码库

为您的 Android 和 iOS 应用程序的网络、数据存储、分析和其他逻辑维护单一代码库。

实施本机 UI 并利用特定于 Android 和 iOS 设备的其他功能。

Hi,下午7:00-7:30分享移动端跨平台开发KMM,邀请您参加 !

主题:移动端跨平台开发KMM

分享人:young

时间:7月20日 7:00-7:30 时长:30分钟

分享内容:移动端跨平台开发KMM,业务共享,原生UI。

分享受众:对移动端开发感兴趣的相关人员

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kotlin Multiplatform 是一种由 JetBrains 开发的跨平台开发框架。它允许开发人员使用 Kotlin 语言编写代码,然后在多个平台上运行,包括 AndroidiOS、Web 等。与传统的跨平台解决方案相比,Kotlin Multiplatform 提供了更高的灵活性和性能。 Kotlin Multiplatform 的核心思想是共享代码。开发人员可以编写一个通用的 Kotlin 模块,其中包含与平台无关的业务逻辑和算法。然后,他们可以根据不同的目标平台,编写平台特定的代码。这样,开发人员可以在不同平台之间共享核心逻辑,减少了重复代码的编写,并且保持了一致性。 Kotlin Multiplatform 目前已经应用于许多项目中。对于 Android 开发人员来说,它提供了更好的性能和开发体验。它允许开发人员在 AndroidiOS 上使用相同的 Kotlin 代码库,从而加快了开发速度和代码复用。对于 iOS 开发人员来说,Kotlin Multiplatform 可以通过共享核心业务逻辑来简化跨平台开发,并且可以与现有的 Objective-C 或 Swift 代码无缝集成。 总之,Kotlin Multiplatform 是一个强大的跨平台开发框架,可以大大简化和提高开发人员的工作效率。它同时适用于 AndroidiOS 开发,并且允许开发人员在不同平台之间共享核心逻辑。在未来,我们可以预见 Kotlin Multiplatform 将会在跨平台开发领域发挥更大的作用,并且有望成为开发人员的首选解决方案

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值