KMP作為第三方庫(kù)導(dǎo)入xcode項(xiàng)目

一、背景

在使用kmp進(jìn)行跨平臺(tái)開發(fā)的過程中,單獨(dú)創(chuàng)建項(xiàng)目肯定是可以在多平臺(tái)正常運(yùn)行的。但目前處于老項(xiàng)目的過渡時(shí)期,需要逐步迭代改造,就需要分模塊進(jìn)行替換,在替換的過程中需要將kmp打包好的.aar或者.framework文件進(jìn)行導(dǎo)入老項(xiàng)目。

二、問題

2.1 嘗試過程

在kmp項(xiàng)目中使用gradle命令iosArm64Binaries進(jìn)行生成ios平臺(tái)需要的包。

找到composeApp/build/bin/iosArm64/debugFramework/ComposeApp.framework文件。

復(fù)制ComposeApp.framework文件到老項(xiàng)目中,在xcode中進(jìn)行依賴添加。

運(yùn)行xcode老項(xiàng)目,發(fā)現(xiàn)報(bào)如下錯(cuò)誤

Uncaught Kotlin exception: org.jetbrains.compose.resources.MissingResourceEx

經(jīng)過研究確定是缺少了圖片資源,而framework中確實(shí)沒有該資源,需要把composeApp/build/kotlin-multiplatform-resources中的ios資源也復(fù)制到xcode老項(xiàng)目

把資源全部復(fù)制到xcode老項(xiàng)目并添加依賴后,發(fā)現(xiàn)依然不能運(yùn)行。

2.2 問題解決

正確的解決步驟如下

在xcode老項(xiàng)目中添加shell命令即可

復(fù)制并修改腳本路徑和模塊名稱,kmp腳本會(huì)自動(dòng)把xcode需要的framework和resources進(jìn)行附加到老項(xiàng)目中

cd "<Path to the root of the multiplatform project>"

./gradlew :<Shared module name>:embedAndSignAppleFrameworkForXcode

記得把沙盒中運(yùn)行腳本的設(shè)置去掉

重新Build項(xiàng)目,成功運(yùn)行。

?著作權(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)容