假设我有一个包,共享包与两个KMM项目共享: KMM项目A和KMM项目B。
因此,我们有共享包-> KMM项目A和共享包-> KMM项目B。
现在,我想在我的iOS应用程序中同时使用KMM项目A和KMM项目B。这是如何工作的呢?共享包是否与这两个框架捆绑在一起(也就是说,我两次包含相同的依赖项?)此外,共享包是否需要是一个KMM项目,以允许KMM项目A和B生成相关的iOS框架?或者是纯粹的Kotlin项目?
这是一个图表,可能会给出更多的解释情况,我正在努力理解。

发布于 2021-12-07 23:05:28
您需要一个依赖于KMM项目A和KMM项目B的包装器"unbrella“模块,并让它生成您的Xcode Framework。
您可以从技术上生成两个框架,分别用于KMM项目A和B,但它们都有“共享包”的副本,以及Kotlin标准库的相关部分,最重要的是,这两个框架在二进制级别上是不同的,因此它们无法通信。
我的意思是,如果“共享包”有一个data class Foo,并且通过调用"KMM项目A“(比方说fun makeAFoo():Foo )得到这个结果,那么在"KMM项目B”中有一个定义为fun takeAFoo(foo:Foo)的函数,您从makeAFoo()获得的Foo实例不能传递到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://stackoverflow.com/questions/70266716
复制相似问题