在現(xiàn)有項目中使用KMM(一) - 搭建環(huán)境

一当编、前言

KMM 全稱 Kotlin Multiplatform Mobile,它是一套基于 Kolin 語言進行跨平臺開發(fā)的技術框架徒溪。主要用于移動端 Android忿偷、iOS的邏輯代碼復用,后續(xù)借助 Compose UI 也可以實現(xiàn) UI 層面的代碼復用词渤。

官方給的教程都是如何新建一個 KMM 的工程牵舱,并不適用在現(xiàn)有項目中接入,因此需要結合已有的項目缺虐,針對性的接入 KMM芜壁。

本篇介紹如何針對現(xiàn)有的 App,配置 KMM 開發(fā)環(huán)境高氮。

二慧妄、配置后的環(huán)境

名稱 舊版本 新版本
Gradle 6.5 7.0.2
Gradle 插件 4.0.1 7.0.0
Kotlin 1.5.30 1.8.0
JDK 1.8 11
Xcode 14.3.1

三、開始在現(xiàn)有項目中接入KMM

1剪芍、安裝 KMM 插件

在 Android Studio 的插件功能中塞淹,搜索 Kotlin Multiplatform Mobile 進行安裝。

安裝插件.png

2罪裹、新建 KMM Module

這里有個需要注意的地方饱普,iOS framework distribution 需要選擇 iOS 接入的方式,一般選擇 Regular framework 即可状共,點擊 Finish 創(chuàng)建一個 KMM Module套耕。

新建KMM Module.png

3、了解下 KMM Module 的目錄

  • androidMain – Android 差異化代碼
  • commonMain – 通用邏輯代碼
  • iosMain – iOS 差異化代碼
  • build.gradle.kts – Module 的 gradle 配置(依賴峡继、插件等)
KMM 目錄.png

如果新建的是一個 KMM 工程冯袍,則詳細的目錄結構如下,內容會更豐富一點,而新建 KMM Module 的方式康愤,只包含下面的 shared 目錄內容儡循。

├── androidApp        # 實際 Android APP Module
├── build.gradle.kts  # 工程根 Gradle 配置
├── gradle
├── gradle.properties
├── gradlew
├── gradlew.bat
├── iosApp            # 實際的 iOS 工程根目錄
├── local.properties
├── settings.gradle.kts
└── shared            # KMM 模塊代碼目錄
    ├── build.gradle.kts  # KMM 模塊 Gradle 配置(依賴、插件征冷、構建 Task择膝、cinterop 等配置)
    └── src # 內部模塊形式都為 Gradle 工程 Module
        ├── androidMain    # Android 差異化代碼,最終生成 AAR
        ├── commonMain     # 共享模塊 API 代碼
        ├── iosMain        # iOS 差異化代碼检激,
        └── nativeInterop  # 默認不會創(chuàng)建调榄,用來存放 *.def 文件,描述與 C/C++ 代碼呵扛,或 Apple Framework 交互時每庆,構建 klib 的配置

4、配置 gradle 插件版本

回到環(huán)境配置今穿,由于是現(xiàn)有項目缤灵,編譯出錯是很正常的事情,第一個錯誤蓝晒,KMM 對 gradle 插件版本有要求腮出,現(xiàn)升級至 7.0.0

  • 最小版本:4.1
  • 最大版本:7.4
KMMgradle插件版本要求.jpg

5、配置 gradle 版本

修改 gradle 插件版本后芝薇,最低支持的 gradle 版本也發(fā)生了變化胚嘲,因此也需要同步修改 gradle 的版本,這里升級至 7.0.2洛二。

6馋劈、添加 allowInsecureProtocol

由于 gradle 7.0 以后,不再允許訪問不安全的鏈接晾嘶,如果堅持要訪問妓雾,需要添加屬性,如下:


gradle7.0https.jpg
repositories {
    maven {
        url 'http://registry.caijj.net/repository/maven-andriod-google'
        allowInsecureProtocol = true
    }
    ...
}

7垒迂、修改 Kotlin 的插件版本

避免出現(xiàn)環(huán)境兼容性問題械姻,選擇性的將 Kotlin 插件版本升級到較新版本 1.8.0。

8机断、現(xiàn)有代碼適配 Kotlin 語法

升級 kotlin 版本后楷拳,對一些靜態(tài)代碼檢查更嚴格一些,如定義的非重載方法名不能和父類重名吏奸,空判斷等欢揖,對不規(guī)范的代碼進行適配。

9苦丁、刪除 kotlin-android-extensions 插件

升級 Kotlin 插件版本后浸颓,kotlin-android-extensions 插件已廢棄物臂,應替換為 view binding 插件旺拉,或者不使用這個插件产上。考慮到使用的地方并不多蛾狗,決定注釋掉該插件的聲明晋涣,修改查找 view 的方式。


kotlin-Android-extensions.jpg

10沉桌、修改 compileSdkVersion

編譯時提示存在其他版本的 compileSdkVersion 谢鹊,需要統(tǒng)一版本號,現(xiàn)在統(tǒng)一為 31留凭。


compileSDK沖突.jpg

11佃扼、升級 JDK 版本

忘記在哪看到的說明,說 JDK 8 有問題蔼夜,順手也升級了...

配置 JDK 11兼耀,并本地安裝 JDK 11,配置環(huán)境變量求冷。

12瘤运、安裝Xcode

KMM 對 Xcode 的版本要求,需安裝符合版本的 Xcode匠题,如果安裝符合版本的 Xcode拯坟,可能還需要升級你的 macOS 系統(tǒng)。


xcode版本要求.png

13韭山、適配第三方 SDK

因為升級了 Gradle 版本郁季,可能會對功能產生影響,建議進行回歸測試钱磅。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末巩踏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子续搀,更是在濱河造成了極大的恐慌塞琼,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禁舷,死亡現(xiàn)場離奇詭異彪杉,居然都是意外死亡,警方通過查閱死者的電腦和手機牵咙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門派近,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人洁桌,你說我怎么就攤上這事渴丸。” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵谱轨,是天一觀的道長戒幔。 經常有香客問我,道長土童,這世上最難降的妖魔是什么诗茎? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮献汗,結果婚禮上敢订,老公的妹妹穿的比我還像新娘。我一直安慰自己罢吃,他們只是感情好楚午,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尿招,像睡著了一般醒叁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泊业,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天把沼,我揣著相機與錄音,去河邊找鬼吁伺。 笑死饮睬,一個胖子當著我的面吹牛,可吹牛的內容都是我干的篮奄。 我是一名探鬼主播捆愁,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窟却!你這毒婦竟也來了昼丑?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤夸赫,失蹤者是張志新(化名)和其女友劉穎菩帝,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茬腿,經...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡呼奢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了切平。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片握础。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悴品,靈堂內的尸體忽然破棺而出禀综,到底是詐尸還是另有隱情简烘,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布定枷,位于F島的核電站孤澎,受9級特大地震影響,放射性物質發(fā)生泄漏依鸥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一悼沈、第九天 我趴在偏房一處隱蔽的房頂上張望贱迟。 院中可真熱鬧,春花似錦絮供、人聲如沸衣吠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缚俏。三九已至,卻和暖如春贮乳,著一層夾襖步出監(jiān)牢的瞬間忧换,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工向拆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留亚茬,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓浓恳,卻偏偏與公主長得像刹缝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子颈将,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內容