什麼是 armv7?
推薦 :iOS 中的 armv7,armv7s,arm64,i386,x86_64 都是什麼
iOS開發~製作同時支持armv7,armv7s,arm64,i386,x86_64的靜態庫.a
在做靜態庫的時候以及引用靜態庫的時候經常會遇到一些關於真機模擬器不通用的情況,會報錯找不到相應庫導致編譯失敗,
這裏簡單記錄一下各種設備支持的架構。
iOS測試分爲模擬器測試和真機測試,處理器分爲32位處理器,和64位處理器,
模擬器32位處理器測試需要i386架構,(iphone5,iphone5s以下的模擬器)
模擬器64位處理器測試需要x86_64架構,(iphone6以上的模擬器)
真機32位處理器需要armv7,或者armv7s架構,(iphone4真機/armv7, ipnone5,iphone5s真機/armv7s)
真機64位處理器需要arm64架構。(iphone6,iphone6p以上的真機)
project -> target -> building setting -> Arhitectures 設置
debug屬性設置爲no的時候,會編譯支持所有架構的版本,編譯的速度會變慢,設置爲yes 的時候,只編譯當前的architecture版本,編譯速度快。
一般情況下,debug 設置爲yes,release爲no,這樣發行版本能適應不同設備
編譯成功 但是 Archive 階段 報錯(如果寫完代碼沒有編譯過,直接Archive ,當我啥也沒有說),往往是用到的靜態庫打包時出現了了問題,這時我們通過以下指令來驗證我們的想法
lipo -info XXXX.a
事實證明我們是對的,這時只需要聯繫 靜態庫編輯者 添加編譯armv7s 即可。
具體操作見
至於我們在編譯過程終於到的Xcode編譯Undefined symbols for architecture xxx 錯誤 見下面這篇文章
Xcode編譯Undefined symbols for architecture xxx 錯誤總結