KMM(Kotlin Multiplatform Mobile) 是 JetBrains 推出的一個跨平台技術
可以讓 Kotlin 寫出來的程式,同時能在 iOS 和 Android 上運作
KMM 和其他線上跨平台技術,像是 ReactNative、Flutter等
最大的不同處在於,KMM 著重在和平台無關的部分
聽起來怪怪的吧!
跨平台技術,卻著重在和平台無關的部分
其實 KMM 的設計概念是這樣
和平台強相關的部分,通常是 UI 或是平台特有的 APIs (像是藍芽)
這部分 KMM 並沒有打算處理,而是建議開發者依然使用原生的方式去開發
因為是和平台強相關,所以用原生的方式去開發,也相對省力
但和平台沒有相關的部分,像是商業邏輯的部分
就可以使用 KMM 來開發,然後同時在 iOS 和 Android 上使用
一個好的 codebase,在開發的時候,也通常會遵守 clean architecture的架構
舉例來說,很多的 design pattern,像是 MVP、MVVM等
都會將商業邏輯和UI切開,讓維護和開發可以更加容易
而商業邏輯本質上來說,本來就和平台無關
所以何不讓iOS和Android可以共享這部份的程式呢?
Use a library not a framework
KMM 比較像是一個工具,而不是一個框架
不需要把整個專案徹底依賴在某個框架上
也不用重新學一個新的語言和框架
KMM 讓開發者自由選擇,想要共享的部分
對於開發者來說,是比較自由的,不會被特定框架給限制住
Netflix 也寫了一篇文章,分享他們對於 KMM 的看法
https://netflixtechblog.com/netflix-android-and-ios-studio-apps-kotlin-multiplatform-d6d4d8d25d23
在各種跨平台的技術中,個人比較喜歡 KMM 的方向
有機會再來分享,用KMM開發一些 side projects 的心得
37 program — 天天變強系列