KMM-首試compose ui跨平臺(tái)

背景

  1. KMM發(fā)展自今已經(jīng)可以在android和iOS平臺(tái)上,通過kotlin compose來(lái)實(shí)現(xiàn)部分通用UI適配,以前還一直沉浸在kmm寫sdk 邏輯在雙方公用的概念上,今天抽空就來(lái)學(xué)習(xí)下用compose開發(fā)兩端ui。
    補(bǔ)充說明:KMM現(xiàn)在還可以開發(fā)桌面應(yīng)用、服務(wù)端應(yīng)用、H5,賊牛逼了。

如何創(chuàng)建

  1. 現(xiàn)在kmm是可以直接通過下面網(wǎng)址,通過勾選所需要的跨平臺(tái),然后填入應(yīng)用名和應(yīng)用id,直接生成可運(yùn)行的跨平臺(tái)項(xiàng)目,這點(diǎn)做的非常Nice。
    kmm跨平臺(tái)創(chuàng)建項(xiàng)目網(wǎng)址

項(xiàng)目運(yùn)行遇到問題

安卓運(yùn)行遇到問題
  1. 項(xiàng)目需要的AS版本需要2025年后的較新版本,否則運(yùn)行提示AGP版本兼容問題。
iOS運(yùn)行遇到問題

問題一:The project at ‘/Users/admin/Library/kotlin_project/KotlinProject/iosApp/iosApp.xcodeproj’ cannot be opened because it is in a future Xcode project file format. Adjust the project format using a compatible version of Xcode to allow it to be opened by this version of Xcode.

上面問題是說,kmm生成的項(xiàng)目所需的版本號(hào)大于Xcode的版本號(hào),無(wú)法打開。這塊iOS在Xcode和編譯版本是抓的比較嚴(yán)格的,所以說需要對(duì)應(yīng)版本。

正確解決:升級(jí)Mac系統(tǒng)版本,把Xcode升級(jí)到最新版本。(我通過升級(jí)Mac到26.0.1,XCode版本:Version 26.0.1成功運(yùn)行iOS應(yīng)用)

錯(cuò)誤解決:將iOS項(xiàng)目降低到對(duì)應(yīng)XCode的版本,從而誕生出問題二。

問題二:The project ‘iosApp’ is damaged and cannot be opened. Examine the project file for invalid edits or unresolved source control conflicts.

上面問題是說,依賴上有沖突,我以為是沒有依賴上framework層,所以根據(jù)!如何給iOS項(xiàng)目注入Compse framework依賴依賴上compose的生成的ios framework后產(chǎn)生了問題三。

問題三:Link issue on iOS (undefined symbol OBJC_CLASS$_UITextLoupeSession)

上面問題三就很懵逼了,在網(wǎng)上搜了后官方直接說升級(jí)Xcode版本,最后還是老老實(shí)實(shí)全家桶升級(jí)好了。
官方回答

kmm項(xiàng)目iOS依賴shell腳本

上面可以看出在根目錄中,執(zhí)行/gradlew :composeApp:embedAndSignAppleFrameworkForXcode 生成framework文件。


生成framework文件

運(yùn)行后效果

image.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)容