KMM-Kotlin跨平臺(tái)應(yīng)用初識(shí)

由于業(yè)務(wù)需求和人力的現(xiàn)狀,采用了Kotlin實(shí)現(xiàn)業(yè)務(wù)邏輯,iOS和Android分別實(shí)現(xiàn)UI繪制的開發(fā)方式。

1、構(gòu)建環(huán)境+創(chuàng)建首個(gè)跨平臺(tái)KMM項(xiàng)目

可參考Kotlin官方指導(dǎo)創(chuàng)建和體驗(yàn)首個(gè)跨平臺(tái)項(xiàng)目。

  • 安裝好 Android studio后,先下載插件:Preferences - Plugins - Marketplace - 搜索 Kotlin Multiplatform Mobile 并安裝。
screenshot-20220314-160641.png
  • 新建項(xiàng)目,選擇KMM app
screenshot-20220314-160359.png
  • 構(gòu)建成功后,選擇iosApp進(jìn)行編譯和運(yùn)行
screenshot-20220314-142249.png
  • 可以構(gòu)建不同模擬器進(jìn)行編譯
截屏2022-03-14 下午2.23.33.png
screenshot-20220314-142404.png

2、KMM項(xiàng)目結(jié)構(gòu)

KMM項(xiàng)目主要為三部分組成:

  • 共享模塊
  • Android app
  • iOS app

項(xiàng)目結(jié)構(gòu)如下所示:

screenshot-20220314-153802.png

3、共享代碼+分平臺(tái)代碼

  • 共享代碼放在 commonMain 的文件夾中,多平臺(tái)可直接調(diào)用
screenshot-20220314-161302.png
  • 因平臺(tái)差異,須分別實(shí)現(xiàn)的,則放在各自平臺(tái)的文件夾中,如 iosMain,但是需要 expect-actual 配對(duì)實(shí)現(xiàn),具體如下:
    • commonMain 實(shí)現(xiàn)接口申明:expect
package com.example.xqkmmdemo

expect class Platform() {
    val platform: String
}
  • iosMain或androidMain 進(jìn)行接口實(shí)現(xiàn):actual
package com.example.xqkmmdemo

import platform.UIKit.UIDevice

actual class Platform actual constructor() {
    actual val platform: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
}

4、Kotlin和客戶端交互

4.1、 Kotlin 直接調(diào)用原生系統(tǒng)方法
package com.example.xqkmmdemo
// 引入原生庫(kù)
import platform.UIKit.UIDevice

actual class Platform actual constructor() {
    // 調(diào)用原生系統(tǒng)方法
    actual val platform: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
}
4.2、 客戶端調(diào)用Kotlin方法

查看KMM項(xiàng)目中自動(dòng)創(chuàng)建的iosApp項(xiàng)目,即可發(fā)現(xiàn)客戶端是如何調(diào)用kotlin的方法。

screenshot-20220315-113558.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容