iOS 解决sdk使用第三方和本地项目冲突的方法

开发中有时候会用到一些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俩个库*/
库中arm64和armv7

3、

mkdir armv7 /*创建临时文件夹,用于存放armv7平台解压后的.o文件*/
如果出现这种情况,说明armv7文件夹已经存在,直接跳转到下一步

4、

lipo libx.a -thin armv7 -output armv7/libx-armv7.a /*取出armv7平台的包*/

5、

ar -t armv7/libx-armv7.a /*查看库中所包含的文件列表*/
sdk中包含的所有.o文件

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这个扯淡的冲突,终于,解决了

你可能感兴趣的:(iOS 解决sdk使用第三方和本地项目冲突的方法)