ios - 如果一个框架导入了主项目也导入的一些库怎么办?

标签 ios xcode frameworks

没有代码,只是一个纯工程问题。

假设我正在开发一个 iOS 应用程序项目 A,它导入一个框架 B。 框架 B 使用一些第三方开源(静态)库,例如 AFNetworking、MBProgressHUD 或 BlocksKit。我的项目 A 也导入了一些相同的库。

所以我的问题是框架B是否包含所有代码二进制文件,包括第三方库?(我猜是的)我的项目也是如此。这是否意味着最终的应用程序二进制文件包含相同代码的多个副本(如果库具有相同/不同版本),这些副本占用了应用程序的一些不必要的体积?

如果框架A和我们的项目B都使用Cocoapods来管理库,问题会解决吗?

另一个相关问题:build设置中的“允许非模块化包含在框架模块中”选项的用途是什么?

最佳答案

如果那些第三方框架是动态库(.dylib.framework)那么它们只会被使用它们的项目引用,它们不会被“包含” "在项目的可执行文件中(我指的是可执行文件或动态库)。第三方动态库必须随应用一起提供(通常在 Frameworks 文件夹中)。

如果这些第三方框架是静态库(.a 或有时是 .framework),那么它们包含在可执行文件中,因此您可能拥有多个副本同一个应用程序中的库。这里有一个潜在的链接器问题,因为来自第三方框架的符号在多个地方定义,但默认情况下它们应该被隐藏以避免导致这个问题。

关于ios - 如果一个框架导入了主项目也导入的一些库怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54705860/

相关文章:

ios - 从 UIScrollview 中删除内容和框架布局指南

ios - Flutter 构建 ios 失败并显示 : Error running pod install

ios - Xcode - 代码签名身份自动?

c++ - 创建可在大多数 PC 上运行的 C++ 程序

ios - 当库包含在我自己的 iOS 自定义框架中时无法存档

ios - 如何在其他开发人员设备上安装我的 xcode 项目进行测试

ios - Skype URL 方案无法重定向到特定用户聊天屏幕

ios - 如何使用 Alamofire 在 iOS13 的 GET 请求中发送 httpBody?

objective-c - 以编程方式从 iPhoto 图库中读取

objective-c - 添加到 Xcode 项目的框架或库的实现在哪里?