iOS.静态库Framework制作流程
1、新建工程,选择Framework
2、删除自带同名的头文件,设置支持的最低系统
创建一个类,用来测试
3、TARGETS - Build Settings 设置相关选项
Build Active Architecture Only 设置为NO的意思是当前打包的.framework支持所有的设备.否则打包时只能用当前版本的模拟器或真机运行
Build Setting 搜索linking 设置Dead Code Stripping 为NO是编译选项优化,包瘦身,(可不改) Mach-O Type 选中StaticLibrary (静态库) Xcode默认是动态库
点击目标工程 >> 选择你创建的Framework >> 点击工程设置 >> 做出如下修改 Build Settings >> Dead Code Stripping >> 设置为NO Build Settings >> Strip Debug Symbol During Copy >> 全部设置为NO Build Settings >> Strip Style >> 设置为Non-Global Symbols Build Settings >> Link With Standard Libraries >> 设置为 NO Build Settings >> Mach-O Type >> Static Library
4、设置公开的文件TARGETS —> Build Phases
将需要呈现给来的头文件,直接从Project拖到Public中. 不想呈现出来的.h文件不建议拖到Private中. 放在project中即可
5、进行编译之前5个选项都设置为release模式 快捷键(command + shift + ,)
6、分别在真机和模拟器状态下编译一下,会生成对应的文件夹,打开文件夹
打开终端可以查看真机和模拟器的ASCC的架构信息(lipo -info ASCC路径),真机是armv7 arm64,模拟器是i386 x86_86.
通过终端命令合并一下,让framework里的ASCC包含所有的架构信息
sudo lipo -create 真机framework文件路径 模拟器framework文件路径 -output 要输出的文件路径。
在桌面生成了新的ASCC文件
注意:XCode12编译的模拟器静态库也支持了arm64,导致出现真机库和模拟器库不能合并的问题,添加如下操作
然后把桌面的ASCC文件替换ASCC.framework里面的ASCC文件
再把替换了的framework文件移到桌面,就可以把这个东西拖进项目里测试了
END