【问题标题】:Can a Objective C Framework/Static Library consist of third party frameworkObjective C 框架/静态库能否由第三方框架组成
【发布时间】:2016-03-22 12:52:05
【问题描述】:

这只是一个信息性问题,我一直在研究在 iOS 中制作框架的几种方法。

我做了 Swift Pure 框架:- 我知道了,您必须将 xcodeproject 包含到应用程序项目中才能使用 .xocdeproject 中包含的 .framework。所以我认为这不是向第三方提供代码的安全方式,而且我也没有找到将第三方框架包含到我自己的框架中的方法。

客观静态库:- 在这种类型的库中,系统会生成一个安全的 .a 文件,使用的人不知道实现部分,但发现如果我想在其中包含第三方框架,我将不得不问最后用户将该第三方项目包含到最终应用程序中以编译它,这将向最终用户显示我拥有的所有依赖项,这是我不想要的。

我的问题是我想制作一个包含所有第三方框架的框架,但是,尽管最终用户仍可以根据需要使用其中的代码,但最终用户不应该使用它们,但最终用户不应该在我的框架中查看它们。

有出路吗?

我浏览了很多链接,发现很多人也有这个疑问

喜欢

Adding FacebookSDK.framework into my own Static library

在这篇文章中,要求一个人获取所有头文件和框架文件,然后将其添加到静态库以构建以添加框架本身,我也尝试过,但没有成功。

【问题讨论】:

  • 如果框架的最终用户可以使用第三方框架的对象,他将如何在没有那些框架的.h的情况下编译他的代码?
  • @Xvolks 对。好的,有什么方法可以将这些第三方框架中的 .h 文件包含到我的框架/静态库中?
  • 你想做的不是最佳实践。假设您将您的框架与 FacebookSDK 版本 1 链接,用户将他的应用程序与您的框架和 FacebookSDK 版本 2 链接。生成的应用程序将具有每个对象的两个不同版本。在运行时使用哪个版本是未定义的。这会造成随机崩溃和/或奇怪的行为。
  • 没有可以避免的问题。是否可以?如果是,如何?谢谢
  • 如果你把 3rd 方框架的 .h 放进去,最终用户就会知道你在使用它。你说你不想。如果添加 .h,为什么不添加整个框架?对于最终用户来说,@ss 真的很痛苦。我自己使用这样的框架,在隐藏模式下使用 OpenCV(我不知道版本),我的应用程序也使用 OpenCV(最新版本)。这种配置我随机崩溃。 :(

标签: ios objective-c swift static-libraries


【解决方案1】:

不要那样做。

实际上,您尝试做的事情并没有好的结果。这非常令人困惑,并将您的库 API 与不同库的 API 耦合在一起,迫使用户坚持使用您的 3rd 方库版本。

如果用户想要使用更新版本的 3rd 方依赖项,他将无法使用,因为这会导致符号重复。

你在互联网上找不到任何关于这种做法的信息,因为没有人这样做

如果你想分发一个已经编译好的库,除了用它编译所有 3rd 方代码之外别无他法,而不暴露头文件。

还有一件非常重要的事情:如果您的 SDK 的用户也使用 3rd 方库,您必须确保他们不会得到重复的符号!

More here...

And here...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2018-12-01
    • 1970-01-01
    • 2016-02-12
    • 2019-08-21
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多