我正在构建一个闭源动态框架。它依赖于第三方闭源静态框架。
我将静态依赖框架链接到我的框架的项目/目标,如中所述这个苹果技术说明 https://developer.apple.com/library/content/technotes/tn2435/_index.html:
同一篇苹果技术说明中提到:
应用程序目标负责嵌入所有框架,
包括其他框架依赖的任何框架。
所以我也给我的客户提供了我所依赖的框架的副本。然而,在同一份技术说明中,Apple(指嵌入静态库/框架)指出:
由于这些情况下的二进制文件是静态库,因此应用程序无法
将其嵌入应用程序包中。
...该库应保留在“Link Binary with Libraries”中
部分。
没关系 - 所以我只是让我的客户链接静态框架依赖项而不是嵌入它,一切都工作正常。
然而,当我的客户需要时,问题就出现了-ObjC
他们使用的其他库的链接器标志。此链接器标志导致我的(objective-c)静态框架依赖项加载其所有类两次,并且客户端在其控制台中随处可见重复的类日志。
这里一种可能的解决方案是让客户识别他们使用的需要的库-ObjC
链接器标志并指定force_load
这些库的标志。但是,在客户端使用 CocoaPods 的情况下,此解决方案也会导致问题,因为 CocoaPods 将覆盖其链接器标志的任何更改-ObjC
再次与每个pod install
. 对于这个问题还有其他解决方案/想法吗?
P.S.我知道之前的苹果技术说明也提到:
静态框架不是共享静态库的受支持方式。
但不幸的是,我目前受到业务限制的束缚,我必须包含这个静态框架依赖项。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)