一、背景
在使用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)行。