1. 程式人生 > >開發中遇到arm64之類的報錯多種解決方案

開發中遇到arm64之類的報錯多種解決方案

公司做SDK開發難免遇到使用者使用SDK遇到各種各樣的原因,固然使用文件說明排除的大部分,但難免會有使用者自己的工程報其他錯而懷疑是SDK的問題,不得不一一去協助解決,下面關於arm64指令集不支援的錯誤總計:

部分報錯內容

 Undefined symbols for architecture arm64:

  "_OBJC_CLASS_$_WBAuthorizeResponse", referenced from:
      objc-class-ref in Payment(MCHApi.o)
  "_OBJC_CLASS_$_WBAuthorizeRequest", referenced from:
      objc-class-ref in Payment(MCHLoginView.o)
  "_OBJC_CLASS_$_WeiboSDK", referenced from:
      objc-class-ref in Payment(MCHApi.o)
      objc-class-ref in Payment(MCHLoginView.o)
  "_OBJC_CLASS_$_BaiduOAuthSDK", referenced from:
      objc-class-ref in Payment(MCHApi.o)

      objc-class-ref in Payment(MCHLoginView.o)

先說一下關於指令集的詳細內容,不用指令集代表不同的裝置

對於iOS裝置來說iOS的指令集有armv6、armv7、armv7s、arm64這樣四種,不同型號的iOS裝置使用不同的指令集,下面是各自的區別:

  • armv6
    • iPhone、iPhone 3G
    • iPod 1G、iPod 2G
  • armv7
    • iPhone 3GS、iPhone 4
    • iPod 3G、iPod 4G、iPod 5G
    • iPad、iPad 2、iPad 3、iPad Mini
  • armv7s
    • iPhone 5、iPhone 5C
    • iPad 4
  • arm64
    • iPhone 5S   iPhone 6  iPhone 6Plus
    • iPad Air, Retina iPad Mini

關於報錯總結一下幾點原因:

1.build setting裡面的 Architectures設定問題


Architectures 設定所支援的指令集

Build Active Architectures Only  YES的時候是針對所測試的裝置去生成所對應的二進位制包(例如此刻是iPhone6 ,那麼就只會生成一套arm64指令集的二進位制),NO的時候回生成所有支援指令集的二進位制包,當然這樣會消耗資源。

Valid Architectures 該編譯項指定可能支援的指令集,該列表和Architectures列表的交集,將是Xcode最終生成二進位制包所支援的指令集。

比如,你的Valid Architectures設定的支援arm指令集版本有:armv7/armv7s/arm64,對應的Architectures設定的支援arm指令集版本有:armv7s,這時Xcode只會生成一個armv7s指令集的二進位制包。

比如,你的Valid Architectures設定的支援arm指令集版本有:armv7/armv7s/arm64,對應的Architectures設定的支援arm指令集版本有:armv7s,這時Xcode只會生成一個armv7s指令集的二進位制包。

2.是所用的靜態庫有的可能不支援arm64等指令集,那麼就需要我們去重新獲取一份支援arm64的靜態庫檔案

3.就是用到SVN版本控制器的時候,預設忽略幾種型別的檔案的,例如.a  .o

1.在finder需要去查詢cornerstone的檔案 ,com+shift+G  ,或者點開finder-前往-前往資料夾, 把該路徑 ~/.subversion/config 貼上到上面,點選 前往


2、開啟config檔案,在裡面搜尋 global-ignores ,你會看到下面這行,

#global-ignores = .o .lo .la .al .libs .so .so.[0-9]* .a .pyc .pyo # .rej ~ ## .#* .*.swp .DS_Store

將其修改為

global-ignores = .o .lo .la .al .libs .so .so.[0-9]* .pyc .pyo#  .rej ~ ## .# .*.swp .DS_Store


儲存後,再開啟svn進行上傳就不會丟失.a檔案了

PS:上傳圖片不知道怎麼回事出現的都是❓不顯示,很煩躁,還有一些原因暫時沒遇到過,先不寫了