对于iOS框架,我希望能够隐藏其中的符号,以防止在框架和使用该框架的应用程序包含同一第三方的不同版本时发生冲突库。
到目前为止,通过在选项中指定-unexported_symbols_list
可以实现这一点。
但是,在Xcode 7 Beta 5中,出现以下错误消息......
-unexported_symbols_list and -bitcode_bundle (Xcode
setting ENABLE_BITCODE=YES) cannot be used together
...在尝试编译框架的BitCode版本时发生。
所以,我有三(3)个问题:
1)在编译BitCode时是否有一种直接的方法来隐藏符号?
2)如果没有,还有什么可以做的,以防止框架的第三方库与应用程序的第三方库碰撞时它们是同一个库,但不同版本
3)为什么可以-unexported_symbols_list
和-bitcode_bundle
一起使用?
答案 0 :(得分:0)
部分答案(因为我也在寻找完整答案)
在选项中使用-exported_symbols_list
或-unexported_symbols_list
时,各种功能符号将变为本地符号。
由于某种原因,链接器无法使用带有本地符号的bitcode选项。
因此两者不能一起使用。
另请注意,用于符号隐藏的strip
关键字可以隐藏全局符号,但库必须是动态的。
这是我尚未完全探索的选项。如果动态库适合您,那么您应该探索它。
如果这有助于某人对如何解决此问题有不同的看法,那就太棒了。