armv7为例:
第一步:查看报信息
lipo -info libx.a
例如 输出结果:
Architectures in the fat file: libGeTuiSdk-1.4.3-noidfa.a are: armv7 i386 x86_64 arm64
如果提示fat file,那么代表这个包是支持多平台的,例如armv7,armv7s,i386等,这需要我们逐一做解包重打包操作。
第二步:创建文件夹
由于到合并多个包,所以需要先分好类后,再进行此操作
mkdir armv7
第三步:提取armv7平台的包
在第一步中,可以看到支持的各个平台。
lipo libx.a -thin armv7 -output armv7/libgt-armv7.a
注:这里armv7,可以换成i386、x86_64等,主要是看你的库文件支持的平台,arm64如果不成功的话可以采用 lipo -thin arm64 /Users/xxx/Desktop/libLechangeSDK.a -output /Users/xxx/Desktop/libLechangeSDK_arm64.a
第四步:解压.a文件
可以使用命令先进行查看.a包中的文件列表
ar -t armv7/libgt-armv7.a
解压.a包(内部都是.o文件)
cd armv7
ar xv libgt-armv7.a
第五步:删除冲突文件
针对minizip来说,我在个推包中,删除如下几个文件(可以手动在文件夹里删除)
rm zip.o
rm unzip.o
第六步:重新打包
删除后,重新把.o文件,打成.a包。(把里面原来的.a文件删除)
cd ..
ar rcs libWintonePlateIDPro-armv7.a armv7/*.o
第七步:将其他几个平台(armv7s, arm64,i386)包逐一做上述操作。
最后合并:重新合并.a文件:lipo -create libWintonePlateIDPro-armv7.a libWintonePlateIDPro-armv7s.a -output libWintonePlateIDPro-new.a