iOS-静态库

众所周知,iOS 仅支持静态库 (iOS 8 之前),这导致开发者在集成各种第三方库和 SDK 时常常会碰到符号文件冲突的问题,因为不同的第三方库 和 SDK 常常会依赖相同的库,如几乎所有和安全相关的库都会依赖 openssl。云信为了最大程度地方便上层开发,一方面会尽量避免引入不需要的第三方库,另一方面也会对一些第三方库进行重命名以保证不出现符号文件冲突的问题。但是由于某些库的特殊性,我们仍不得不原原本本地引入,无法做完整的修改。一种规避的方法是双方同时依赖同一份底层库代码。
举个例子,在同时使用云信和支付宝 SDK 时,会发生符号文件冲突的问题,原因是它们都依赖 openssl。在手动集成时,我们推荐直接移除某一方所依赖的 libssl.a 和 libscrypto.a 文件。而在使用 Cocoapods 集成时则可以通过 post_install 方法进行冲突静态库的去除。
http://simplecodesky.com/2017/06/14/静态库中类的分类问题和符号冲突问题/
https://www.developerinsider.in/cocoapods-remove-duplicate-symbols-errors/