iOS .a类型静态库使用终端进行拆解和合并生成

项目中会用到许多第三方的.a类型的静态库,有时候会有一些静态库回包含相同文件而产生冲突,我们就需要对这个库进行去重的一个操作。一般有哪些文件冲突了,xcode报错都会有详细的提示。我们可以将这两个库合并,也可以其中一方中的文件删除。我们已拆分一个test.a为例,作一个简单的总结:

一、删除重复文件

第一步:首先要确定你所操作的静态库支持的框架

复制代码
lipo -info test.a 

第二步:将静态库按照支持的框架拆分

复制代码
以拆分armv7 框架为例
lipo -extract_family armv7 -output test_armv7.a  test.a 
这时候去文件夹下查看出现一个test_armv7.a的静态库就说明是成功了
这时候一定要记得确定(lipo -info test_armv7.a )一下你拆分出来的版本是否是你想要的这个框架下的

第三步:删除重复的文件,记得是删除你分离出来的单框架库中的文件

复制代码
ar -d test_armv7.a test1.o

第四步:将静态库支持的框架都进行第二步和第三步操作。

第五步:将操作完成的库合并成新的库

复制代码
lipo -create -output test_new.a  test_armv7.a test_arm64.a

二、合并静态库

合并静态库和删除重复文件都需要确定支持框架和按照支持的框架拆分,就不在赘述了。

第三步:将分解库中的文件拆分出来

复制代码
 ar -x test_armv7.a
这时候你的文件夹中会出现你库中包含的.o文件

第四步:将你需要合并的另一个库进行相同操作,将文件分解到相同文件夹中,相同的文件回自动的保留一份。

复制代码
注意: 
     1、我是在相同的文件中操作的,所以最后分解完成记得将 test.a等源库删除。
     2、不同的框架下的文件记得分解到不同的文件夹中。

第五步:生成不同框架下的静态库

复制代码
ibtool -static -o test_new_armv7.a *.o

第六步:合成新的静态库

复制代码
lipo -create -output test_new.a  test_new_armv7.a test_new_arm64.a

指令合集 直接copy可用的

复制代码
lipo -info SpeexKit.a

arm64 arm64e armv7 armv7s 



lipo -extract_family arm64 -output SpeexKitv64.a  SpeexKit.a

lipo -info SpeexKitv64.a



lipo SpeexKitv64.a   -thin arm64 -output  SpeexKitv64.a


ar -d SpeexKitv64.a SpeexUnit.o


--------------------->
lipo -extract_family arm64e -output SpeexKitv64e.a  SpeexKit.a

lipo -info SpeexKitv64e.a



lipo SpeexKitv64e.a   -thin arm64e -output  SpeexKitv64e.a


ar -d SpeexKitv64e.a SpeexUnit.o

------------------>

lipo -extract_family armv7 -output SpeexKitv7.a  SpeexKit.a

lipo -info SpeexKitv7.a



lipo SpeexKitv7.a   -thin armv7 -output  SpeexKitv7.a


ar -d SpeexKitv7.a SpeexUnit.o

--------------------->


lipo -extract_family armv7s -output SpeexKitv7s.a  SpeexKit.a

lipo -info SpeexKitv7s.a



lipo SpeexKitv7s.a   -thin armv7s -output  SpeexKitv7s.a


ar -d SpeexKitv7s.a SpeexUnit.o



--------------------->



lipo -create -output SpeexKit.a  SpeexKitv64.a  SpeexKitv64e.a  SpeexKitv7.a  SpeexKitv7s.a
相关推荐
tangbin5830851 小时前
iOS Swift 可选值(Optional)详解
前端·ios
卷心菜加农炮13 小时前
基于Python的FastAPI后端开发框架如何使用PyInstaller 进行打包与部署
ios
北极象1 天前
千问大模型接入示例
ios·iphone·qwen
ipad协议开发1 天前
企业微信 iPad 协议应用机器人开发
ios·企业微信·ipad
QuantumLeap丶2 天前
《Flutter全栈开发实战指南:从零到高级》- 26 -持续集成与部署
android·flutter·ios
2501_915918412 天前
TCP 抓包分析在复杂网络问题中的作用,从连接和数据流层面理解系统异常行为
网络·网络协议·tcp/ip·ios·小程序·uni-app·iphone
二流小码农2 天前
鸿蒙开发:个人开发者如何使用华为账号登录
android·ios·harmonyos
wvy2 天前
Xcode 26还没有适配SceneDelegate的app建议尽早适配
ios
游戏开发爱好者82 天前
苹果 App 上架流程,结合 Xcode、CI 等常见工具
macos·ios·ci/cd·小程序·uni-app·iphone·xcode
前端老白2 天前
webview在微信小程序中,安卓加载失败,IOS正常加载
android·ios·微信小程序·webview