假設我有一個包,共享包與兩個 KMM 專案共享:KMM 專案 A 和 KMM 專案 B。
所以我們有共享包 -> KMM 專案 A 和共享包 -> KMM 專案 B。
現在我想在我的 iOS 應用程式中同時使用 KMM 專案 A 和 KMM 專案 B。這是如何運作的?共享包是否與兩個框架捆綁在一起(即我兩次包含相同的依賴項?)。此外,共享包是否需要是一個KMM專案才能讓KMM專案A和B生成相關的iOS框架?或者它可以是一個純粹的 Kotlin 專案嗎?
這是一張圖表,可以對我試圖理解的情況提供更多的解釋。

uj5u.com熱心網友回復:
您需要一個依賴于 KMM 專案 A 和 KMM 專案 B 的包裝器“unbrella”模塊,并生成您的 Xcode 框架。
從技術上講,您可以生成 2 個框架,每個 KMM 專案 A 和 B 一個,但它們都將擁有“共享包”的副本,以及 Kotlin 標準庫的相關部分,最重要的是,這兩個框架將是在二進制級別上不同,因此它們無法通信。
我的意思是,如果“共享包”有一個data class Foo,并且你通過呼叫“KMM 專案 A”得到它,比如說fun makeAFoo():Foo,你在“KMM 專案 B”中有一個函式,它被定義為fun takeAFoo(foo:Foo),Foo你的實體get frommakeAFoo()不能傳入takeAFoo(foo:Foo)。
因此,簡短的回答是您需要一個包裝器模塊來拉入兩個“共享包”模塊。您還需要通過保護傘匯出它們。
請參閱:https : //touchlab.co/multiple-kotlin-frameworks-in-application/和https://kotlinlang.org/docs/mpp-build-native-binaries.html#export-dependencies-to-binaries
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/376199.html
標籤:科特林 kotlin-多平台 公里数
