分发时如何在框架之外排除库?

时间:2019-03-08 12:53:58

标签: ios xcode frameworks

我们创建了一个IOS框架,该框架可以分发给各个人。但是现在我们遇到了一个有趣的问题。我们在框架中使用了protobuf,我们的一位客户开始使用Expo Kit,该工具包最近也包含了protobuf,现在我们的客户崩溃了:

Class Foo is implemented in both ... One of the two will be used. Which one is undefined.

我们不能使用Cocoapods Protobuf-ios,因为它已经过时了。

我唯一想到的选择是在不包含此客户端的protobuf文件的情况下构建框架。因此,我们的框架将使用其Expo Kit profobuf文件。我该如何在Xcode中执行此操作,或者是否有替代解决方案。

编辑:

我想实现的目标,但似乎并不能正确解决。我想发布没有Protobuf.a文件的Framework。 Protobuf.a必须依赖于客户端应用程序。

2 个答案:

答案 0 :(得分:2)

您需要有一个dynamic链接到该程序包,除非有必要,否则请避免在您的框架中嵌入第三方二进制文件。

查看这些文章,希望对您有所帮助

https://theswiftdev.com/2018/01/25/deep-dive-into-swift-frameworks/ https://www.bignerdranch.com/blog/it-looks-like-you-are-trying-to-use-a-framework/

这也很有趣:

When should we use "embedded binaries" rather than "Linked Frameworks" in Xcode?

答案 1 :(得分:2)

如果Protobuf已嵌入/链接包含Protobuf的框架,则无需在客户端应用程序中链接Protobuf。

在客户端应用程序中,您可以提供Protobuf嵌入框架内部的路径。您只需修改客户端应用程序的Framework Search Path,并提供嵌入到框架内的protobuf的路径。