iOS系統現在有各種架構,包含device上的armv7, armv7s, arm64 和模擬器的x86,x86_64
直接建立library project所build出來的 .a檔案並不會包含所有架構的binary, 需要分別把各種架構的.a編出來以後用指令將它們包成一個fat library
以下為製作library的步驟:
1.建立一個project時選擇 Cocoa Touch Static Library
2. 編寫library
3. 在Build Phases中的 Copy Files 加入需要一同release的header檔案
如此在編譯的時候這些header檔案會被放入編譯出來資料夾下的include資料夾中
這些即為使用此library時所需include的header
4.在Build Setting -> Architectures -> Build Active Architecture Only 都設為NO
這一步很重要,如果不這樣設定編譯出來的 .a檔案只會有當下選擇的target
5.分別選擇device 跟simulator 為target各build一次 (按下run button也可,因為是library project所以只會build不會run)
這樣會分別編譯出device 跟simulator的.a檔案
6.對Products資料夾下的.a檔案按右鍵選擇show in finder,
在finder中往上找幾層會發現有兩個資料夾 Debug-iphoneos跟 Debug-iphonesimulator
兩個資料夾下都各有一個.a檔案
7. 使用以下指令將兩個.a 變成一個大.a (此工具不用安裝mac本來就有)
lipo -create "Debug-iphoneos/xxxxx.a" "Debug-iphonesimulator/xxxxx.a" -output "xxxxx.a"
8.大功告成,將這個產生的.a檔案與Debug-iphoneos/include 資料夾中的檔案加入欲使用此lib的project即可使用!