iOS之如何创建.a静态库

番外:想要查看如何创建.framework静态库可前往看我​​​​​​​ iOS之如何创建.framework静态库-CSDN博客这篇文章。

一、创建静态库项目

  • ①、打开 Xcode 并创建一个新的 Xcode 项目。

  • ②、选择 "macOS" -> "Framework & Library" -> "Cocoa Touch Static Library"。

  • ③、命名你的项目,例如 "StaticLibrary"。

  • ④、选择合适的语言 (Swift 或 Objective-C)。

如下图:

二、添加你的代码

  • ①、删除项目创建后默认的文件,在项目中添加你想要包含在静态库中的代码文件。

  • ②、你可以在项目中添加新的类或头文件。

  • ③、确保你的代码经过测试并且没有错误。

三、 配置静态库目标

①、修改BuildSetting配置,将Build Active Architeture Only 设置为NO

②、添加需要暴露在外面的.h文件,.m文件会自动编译到.a文件中。

添加New Headers Phase目录


Mark:这里需要暴露的.h文件需要放在Public列表栏里面。

③、Edit Scheme - 模式改为release模式。

四、构建静态库

分别在真机和模拟器上都要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静态库

相关推荐
狂热开发者1 小时前
用 Typeoff 把会后口述整理成 Markdown 决策记录
人工智能·windows·macos·ios·安卓
MDM.Plus20 小时前
苹果MDM技术演进:从远程控制到设备信任体系的构建
运维·服务器·安全·ios·mdm·手机店
韩曙亮1 天前
【Flutter】Flutter 进程保活 ③ ( 屏幕常亮设置 | Flutter 禁止息屏、关闭自动锁屏、屏蔽系统屏保 )
android·flutter·ios·屏幕常亮·禁止息屏
2501_915909061 天前
IPA 深度混淆是什么意思?从混淆强度到实际效果的解读
android·ios·小程序·https·uni-app·iphone·webview
apihz1 天前
经纬度制作高清卫星图片免费 API 接口详解
开发语言·ios·swift
黄林晴1 天前
KMP 正式支持 SwiftPM:CocoaPods 迁移配置指南
android·ios·kotlin
Tisfy2 天前
iOS:压缩和解压live图(.livp)——百度一刻相册+百度网盘识别支持
ios·百度网盘·livp·live图·一刻相册
唐诺2 天前
Objective-C 之 KVC 详解
ios·objective-c·kvc
00后程序员张2 天前
iOS 打包方式汇总 从 Xcode Archive 到轻量级工具链的 IPA 构建
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
CHB3 天前
uni-app x 蒸汽模式 iOS版 性能测试基准报告 Benchmark
ios·uni-app·swiftui