开发中有时候会用到一些sdk,然而,有些sdk中应用了大量的第三方,并且在编译的时候,未处理,这就导致了和我们项目本地第三方冲突,本文,就是来解决这个问题,拿到冲突sdk之后,使用终端,直接cp到.a文件库
1、
cp /Users/fengwaixinglinxiang/Desktop/支付插件静态库/Debug-iphoneos(真机)/libMPayPlugPayment.a ./libx.a /*前面路径为.a库所在的文件夹,后面libx.a为过渡用的目标库*/
2、
lipo -info libx.a /*查看包信息:armv7和arm64俩个库*/
3、
mkdir armv7 /*创建临时文件夹,用于存放armv7平台解压后的.o文件*/
4、
lipo libx.a -thin armv7 -output armv7/libx-armv7.a /*取出armv7平台的包*/
5、
ar -t armv7/libx-armv7.a /*查看库中所包含的文件列表*/
6、
/*删除掉所有和你本地冲突的.o文件*/ 如:
rm MJPropertyType.o
rm MJPropertyKey.o
rm MJFoundation.o
rm MJExtensionConst.o
rm MJProperty.o
7、
cd .. && ar rcs libx-armv7.a armv7/*.o /*重新打包生成armv7*/
8、重复操作3-7打包出新的arm64
9、
lipo -create libx-armv7.a libx-arm64.a -output libiPosLib-new.a /*重新合并为fat file的.a文件*/
10、
cp /Users/fengwaixinglinxiang/Desktop/支付插件静态库/Debug-iphoneos(真机)/libMPayPlugPayment.a /*拷贝到项目中覆盖源文件*/
到此.a库的所有冲突文件解决,还需要工程里面配置下
building Setting --> Other linker flag --> 增加 -dead_strip
编译,通过,调用,没问题,nice这个扯淡的冲突,终于,解决了