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
相关推荐
用户091 天前
SwiftUI Charts 函数绘图完全指南
ios·swiftui·swift
YungFan1 天前
iOS26适配指南之UIColor
ios·swift
权咚2 天前
阿权的开发经验小集
git·ios·xcode
用户092 天前
TipKit与CloudKit同步完全指南
ios·swift
法的空间2 天前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios
2501_915918412 天前
iOS 上架全流程指南 iOS 应用发布步骤、App Store 上架流程、uni-app 打包上传 ipa 与审核实战经验分享
android·ios·小程序·uni-app·cocoa·iphone·webview
00后程序员张3 天前
iOS App 混淆与加固对比 源码混淆与ipa文件混淆的区别、iOS代码保护与应用安全场景最佳实践
android·安全·ios·小程序·uni-app·iphone·webview
Magnetic_h3 天前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
00后程序员张3 天前
详细解析苹果iOS应用上架到App Store的完整步骤与指南
android·ios·小程序·https·uni-app·iphone·webview
前端小超超3 天前
capacitor配置ios应用图标不同尺寸
ios·蓝桥杯·cocoa