前言
在ios开发过程中,由于IOS系统的应用运行模式是一个单进程,它不像Android应用那样多进程,库文件可以有多个引用,这就导致了在ios开发中不可避免地会出现多个不同版本的开源库存在于.a库或者项目工程里,从而导致在运行时crash,解决此类问题,目前有两种:
1.找到冲突的库或文件剔除掉或换成统一版本
2.把所有存在冲突的库制作成动态库(.framework或.dylib)
针对以上两种方案,我个人认为第一种方案在对存在冲突的库里的相同其他库不进行二次定制开发的话,是可行的,第二种方案是比较一劳永逸的方案,它可以解决99%的包冲突问题。
创建动态库并引入静态库
- 创建动态库工程
- 引入存在冲突的.a库制作.framework 或.dylib
- 修改编译配置,使支持编译成动态库
- 编译生成framework
注意:以上截图重的libDanaleSDK.a文件是我目前工程的静态库,可换为自己的库即可
经过以上步骤,即编译配置过程已完成,手动编译即可以在Products下生成动态库
使用生成的动态库
-
在工程中拖入生成好的动态库,在Build Phases -> Link Binary With Libraries 加入引用动态库
-
在工程中 General -> Frameworks,Libraries,and Embedded Content 加入动态库,并且把 Embed选项改为Embed Without signing