關于QQ互聯SDK不支持i386的解決辦法

問題

使用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.

iOS_SDK_V3.1.0

解決辦法

  • 方法1

不要在iphone5及以下的模擬器測試,可以在支持64位模擬器比如iphone5s及以上測試。不影響真機。
同時,在TARGETS里面的設置如下:

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的問題解決方案
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容