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

原文地址:https://www.cnblogs.com/qq95230/p/13294874.html