关于支付宝sdk和百度云推送sdk引入的base64.o编译报错问题

来源:互联网 发布:nginx 默认时间格式 编辑:程序博客网 时间:2024/06/06 07:51

原文点击打开链接

原先在项目中加入了百度云推送的sdk,看PDF集成的需要base64.h/base64.m的俩文件,之后一直没有没什么问题。直到要在项目中加入支付宝sdk的。按照说明集成配置完的。一编译直接包错了。


四处问了,确定应该是百度推送需要引入的base64.h/base64.m和支付宝sdk里面的AlipayRsaLib里面包含的base.o的一样的冲突。

开始还是想着.a的静态库的动不了那只有试着删除百度sdk引入的俩文件的,但是这俩文件一删除的。直接照成了百度推送的不能使用。。。

所以还是找其它方法的解决。开始也有人介绍如何合并.a的资料但是没接触过还是不敢弄。后来庆幸找到了一哥跟我一样的情况的。网址:点击打开链接,按照上面说的步奏一步步的试下来。开始的时候只移除了i386和armv7里面的base64.o保留了armv7s里面的。发现在模拟器上运行的真的可以编译通过了。但是真机运行还是会报上面的错误的。想想是不是armv7s没有移除的问题的。但是移除了全部的不知道对支付宝sdk的有没有影响的。所以还是和支付宝的客服询问了一下(支付宝客服还是很不错滴)。经过半天的了解。告诉了他们我的情况:在项目中已经加入了base64.h/base64.m的这俩文件的,那么将支付宝AlipayRsaLib.a里的base64.o的移除也是没有影响的。贴图:

所以,索性将armv7s里面的base64.o的一并移除了。再重新打了一个没有包含base64.o的库出来的。将它替换到测试的项目中运行的没有报错。用真机付款成功的也可以正常操作。试了百度推送的也是能正常运行的。


自己拷贝份保存下

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. (后面就不自己写了,直接copy过来稍加改动了)  
  2.     开console,找到要解剖的.a文件,执行下列命令查看库包含的cpu架构代码:  
  3. xcrun -sdk iphoneos lipo -info libx.a  
  4. Architectures in the fat file: libx.a are: i386 armv7 armv7s  //此处如果直接使用lipo命令看到的会是: i386 armv7 (cputype(12)subcputyp(11))  
  5.   
  6. 然后用 xcrun -sdk iphoneos lipo -extract_family armv7 -output libx-inter.a libx.a  
  7.   
  8. 分离出arm版本的.a,这里有个小问题,按我的理解此命令应该对包含3种cpu代码的.a里的armv6部分进行操作,而实际分离出来的.a却是同时包含armv7和armv7s的部分,也就是依然是”fat” lib,这样是不能抽出.o的,因此还需要进行以下操作:  
  9. lipo libx-inter.a -thin armv7 -output libx-armv7.a lipo libx-inter.a -thin armv7s -output libx-armv7s.a  
  10. 这样就能分离出2份不同版本arm的.a了,然后进行解.o操作:  
  11. ar -x libx-armv7.a  
  12. 这部操作最好放到单独的文件夹里进行,会将link出.a的所有.o还原出来,然后有两种选择:一是把所有库对应cpu架构的部分都还原到这个位置,然后将重复的部分合并为一份,接着用后面的命令将所有.o再合并为一份公共lib。还有一种选择就是保留重复符号中的一份lib完好如初,将其余lib单独解开,剔出重复符号存在的.o,然后将该lib重新link回.a,以去除重复符号。  
  13. 不管用哪种方法解决,最后的link回命令如下:  
  14. libtool -static -o ../libx-armv7.a *.o  
  15.   
  16. 当然,别忘了咱们的库都是有多份cpu架构指令的,所以,先要对每种cpu arch的库进行同样操作,然后还要将thin lib合并回fat lib:  
  17. lipo -create -output libx.a libx-armv7.a libx-i386.a libx-armv7s.a  
  18. 这样,再link回自己的app时就不会再出现duplicate symbol了。   



贴出没有base64.o的AlipayRsaLib.a的地址:点击打开链接(支付宝版本v1.2,以后版本更新了如果修改了要重新按照原先的方法制作一份)


0 0
原创粉丝点击