番外:想要查看如何创建.framework静态库可前往看我iOS之如何创建.framework静态库-CSDN博客这篇文章。
一、创建静态库项目
①、打开 Xcode 并创建一个新的 Xcode 项目。
②、选择 "macOS" -> "Framework & Library" -> "Cocoa Touch Static Library"。
③、命名你的项目,例如 "StaticLibrary"。
④、选择合适的语言 (Swift 或 Objective-C)。
如下图:
二、添加你的代码
①、删除项目创建后默认的文件,在项目中添加你想要包含在静态库中的代码文件。
②、你可以在项目中添加新的类或头文件。
③、确保你的代码经过测试并且没有错误。
三、 配置静态库目标
①、修改BuildSetting
配置,将Build Active Architeture Only
设置为NO
。
![](https://img-blog.csdnimg.cn/img_convert/e4498fd3c7107346ab8e167d6528e129.jpeg)
②、添加需要暴露在外面的.h
文件,.m
文件会自动编译到.a
文件中。
![](https://img-blog.csdnimg.cn/img_convert/cd91a42972a89cd892bb665dcab08a44.jpeg)
Mark:这里需要暴露的.h
文件需要放在Public
列表栏里面。
③、Edit Scheme
- 模式改为release
模式。 ![](https://img-blog.csdnimg.cn/img_convert/52bd3bff5a39f624e2e0076741a10e0f.jpeg)
四、构建静态库
分别在真机和模拟器上都要Command+B
编译,编译之后我们可以看到如下内容:
其中,
Release-iphoneos
代表的是真机下的静态库文件,Release-iphonesimulator
表示的是模拟器下的静态文库文件。
五、合并静态库
①、新建一个文件夹用来存放真机和模拟器下打包出来的静态库,博主这里新建一个“合并静态库”的文件夹(不新建在原目录也一样)。
②、打开终端,在终端输入lipo -create 模拟器下的.a 真机下的.a -output 新合并的静态库的存放路径
,如下:
温馨提示:如果在合并的过程中有人碰到跟博主一样的错误的话,请按照下面的方式修改Xcode配置,然后重新编译生成新的.a静态库:
①、选择模拟器,此时可以看到模拟器支持arm64
出现错误的原因在于:在Xcode12之后编译的模拟器静态库也支持arm64,会导致真机和模拟器有相同的支持架构arm64,这也就导致模拟器和真机不能合并的问题,上面Xcode设置就是将arm64架构移除。
记得设置好编译完模拟器静态库后重新选择真机应把配置更改回去
合并之后,可以在目标文件夹下看到我们刚合并的静态库:
③、可以使用lipo -info
看一下我们打出来的这个静态库支持的架构是哪些:
此时.a静态库算是完全制作完成
六、Mark注意点:
温馨提示:如果项目里找不到.a的文件,如下图:
![]()
项目目录里没有Products文件以及.a静态库 ![]()
打开StaticLibrary.xcodeproj的包内容 ![]()
打开project.pbxproj ![]()
将mainGroup的值复制到productRefGroup,保存 ![]()
重新打开项目可以看到项目目录里有Products文件以及.a静态库