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静态库

相关推荐
吴Wu涛涛涛涛涛Tao5 小时前
深入理解 Swift Codable:从基础到进阶
ios
Jouzzy11 小时前
【iOS安全】iPhone X iOS 16.7.11 (20H360) WinRa1n 越狱教程
安全·ios·iphone
二流小码农1 天前
鸿蒙开发:实现一个标题栏吸顶
android·ios·harmonyos
season_zhu1 天前
iOS开发:关于日志框架
ios·架构·swift
Digitally1 天前
如何在电脑上轻松访问 iPhone 文件
ios·电脑·iphone
安和昂1 天前
【iOS】YYModel源码解析
ios
pop_xiaoli1 天前
UI学习—cell的复用和自定义cell
学习·ui·ios
Daniel_Coder1 天前
Xcode 16.4 + iOS 18 系统运行时崩溃:___cxa_current_primary_exception 符号丢失的原因与解决方案
ios·xcode·ios 18·dyld·libc++abi
烈焰晴天1 天前
使用ReactNative加载Svga动画支持三端【Android/IOS/Harmony】
android·react native·ios
sg_knight1 天前
Flutter嵌入式开发实战 ——从树莓派到智能家居控制面板,打造工业级交互终端
android·前端·flutter·ios·智能家居·跨平台