关于QQ互联SDK不支持i386的解决办法

关于QQ互联SDK不支持i386的解决办法_第1张图片

问题

使用2016-05-17更新的QQ互联SDK在使用模拟器运行是会出现以下报错:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_QQApiInterface", referenced from:
      objc-class-ref in ShareSDKManage.o
      objc-class-ref in UserLoginViewController.o
  "_OBJC_CLASS_$_TencentOAuth", referenced from:
      objc-class-ref in ShareSDKManage.o
ld: symbol(s) not found for architecture i386

包括使用ShareSDK、友盟社会化分享SDK等集成QQ互联的SDK。

原因

这是引文QQ互联的iOS_SDK_V3.1.0版本不支持i386.

关于QQ互联SDK不支持i386的解决办法_第2张图片
iOS_SDK_V3.1.0

解决办法

  • 方法1

不要在iphone5及以下的模拟器测试,可以在支持64位模拟器比如iphone5s及以上测试。不影响真机。
同时,在TARGETS里面的设置如下:

关于QQ互联SDK不支持i386的解决办法_第3张图片
Xcode设置
  • 方法2

使用lipo命令从旧库分离出i386部分,再合并到新库中去。

这么做可能引起一些未知的风险,需要谨慎执行。
由于公司的项目因为历史原因问题,不适合采用方法1,因此在充分考虑之后选择方法2.

查看库支持架构:

lipo -info TencentOpenAPI

可以看到没有i386:

Architectures in the fat file: TencentOpenAPI are: armv7 x86_64 arm64

接下来,从旧库中抽离i386:

lipo TencentOpenAPI -thin i386 -output TencentOpenAPI-i386

把新生成的TencentOpenAPI-i386合并到新库中去:

ipo -create TencentOpenAPI TencentOpenAPI-i386 -output TencentOpenAPI-new

参考

  1. 关于最新版的腾讯的SDK不支持i386的问题解决方案

你可能感兴趣的:(关于QQ互联SDK不支持i386的解决办法)