iOS sdk打包知識

weixin_34120274發表於2018-12-19

參考文章:
如何打包靜態庫.a檔案

xcode如何實現多工程聯編 Target Dependencies
Target Dependencies 是用來指定編譯順序的。
是指需要先編譯好Target Dependencies中的庫,
才能編譯當前Target。

  • 檢視.a檔案支援哪些處理器架構Architectures
    lipo -info空格+.a路徑(路徑可以拖動檔案到命令列工具自動生成)
$ lipo -info /Users/yuanzhiying/Desktop/libRCSCore.a 
Architectures in the fat file: /Users/yuanzhiying/Desktop/libRCSCore.a are: i386 x86_64 
  • 合併多個.a檔案為一個檔案
    lipo -create .a路徑 .a路徑 -output 最終.a的路徑
lipo -create /Users/ssiwo02/Desktop/A/libXXXXX-armv7.a /Users/ssiwo02/Desktop/B/libXXXXXX-armv7s.a -output /Users/ssiwo02/Desktop/libXXXXX.a

iOS 中的 armv7,armv7s,arm64,i386,x86_64 都是什麼

  • armv7|armv7s|arm64都是ARM處理器的指令集
  • i386|x86_64 是Mac處理器的指令集
arm64:iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S | iPad Air| iPad mini2(iPad mini with Retina Display)
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4

i386是針對intel通用微處理器32位處理器
x86_64是針對x86架構的64位處理器

模擬器32位處理器測試需要i386架構,
模擬器64位處理器測試需要x86_64架構,
真機32位處理器需要armv7,或者armv7s架構,
真機64位處理器需要arm64架構。
  • sdk不支援模擬器解決辦法
    使用巨集定義 TARGET_OS_SIMULATOR 來判斷,區別不同的程式碼

相關文章