Kotlin Multiplatform Mobile KMM 初體驗

最早知道Kotlin有跨平台野心與功能的時候,我並不怎麼感興趣,因為有Flutter擋在前面,對於節省成本來說Flutter才是我心中的最佳解決方案,但也許會因為各種因素(ex:政治、需求...等)無法使用Flutter也許就可以考慮一下Kotlin的跨平台功能,其實也是剛好有段空閒時間可以來做技術研究。

正好不久前官方推出了KMM(Kotlin Multiplatform Mobile),要怎麼定義這個KMM呢?依官方的說法這是一個生態系,而官方也提供了一個IDE的Plugin讓我們可以很簡單的建立起一個KMM App。


本來在玩之前我以為Kotlin只是提供了功能可以讓不同平台共用P層與MV層的介面(如果以MVP架構來理解的話),玩下去才發現,原來Kotlin也有提供各平台的API可以直接實做,雖然我還是比較喜歡把各平台的東西堆回去自己實做就是,因為這樣就會牽扯到維護性的問題,但這個Kotlin都這樣做了應該想好後續的維護速度與問題了。
在Kotlin提供的介面寫法底下直接實做功能

不體驗還好,一體驗過後一整個就愛上KMM了,什麼麻煩的東西官方都在gradle中設定好了,範例跑起來沒遇到什麼太大的問題,而在各平台中也就是當做一個Library導入而已,也許我不一定能在公司導入Flutter,但我一定能導入KMM!



官方建議的軟體架構是MVP或是MVI(對應宣告式UI),我對MVI的理解是Flutter的BLoC,但其實不是這樣的架構也不用太擔心,在官方的另外一個範例中,也是什麼架構都沒用,所以這不太會影響到導入門檻。

在另外一個範例(Hands-on: Networking and Data storage)中,官方還展示了有Mobile跨平台HttpClient跟Database Library,也就是說以MVP來舉例,完全可以達到M跟P在兩平台(Android、iOS)共用,View拉回各自專案實做的地步,看到這不知道大家有沒有對KMM充滿著期待呢?未來需求有機會的話,我應該會試著導進專案當中,未來有什麼心得再跟大家分享,不過這邊注意的是KMM目前還是Alpha狀態,而官方定義Alpha的意思是"使用風險自負,預計會出現遷移問題",大家自己衡量一下囉。
最後希望你帶走知識的同時,也能留下一兩句的心得與我們分享或是幫我們按下+1並分享到FB








留言