最近突然相對自己封裝的一些UI工具類進行進一步的封裝,突然想到了之前做過的靜態(tài)庫封裝,今天重新試了下,操作上不是很熟悉,以此為契機,將技術中的點點滴滴記于簡書。
一、 創(chuàng)建一個靜態(tài)庫工程。
1. 打開Xcode,點擊File\New\Project,選擇iOS\Framework and Library\Cocoa Touch Static Library新建一個靜態(tài)庫工程.
將工程命名為APTestSDK。
二、工程配置
Build ActiveArchitecture Only設置成YES;
Architectures按Xcode默認配置,arm64向前兼容;
制作.a靜態(tài)庫,需要要保證兼容性,包括不同iOS設備以及模擬器運行不出錯,所以盡量做到最大的兼容性。
ValidArchitectures設置為:armv7|armv7s|arm64|i386|x86_64
三、一個靜態(tài)庫工程由頭文件和實現(xiàn)文件組成,編輯之后就組成了庫本身。
創(chuàng)建靜態(tài)庫庫時,一般是不需要.m實現(xiàn)文件的,選中APTestSDK.m右擊選中delete,將其刪除。
四、將自己封裝好的自定義控件拖入工程。
1. 將功能相關的所有頭文件,導入到SDK的頭文件中。
2. 選中Generic iOS Device,Comand+B編譯工程。(選中Generic iOS Device編譯的是真機,選中模擬器編譯的就是對應的模擬器靜態(tài)庫。) 若編譯成功紅色的libAPTestSDK就會變成灰色。
3. 選中l(wèi)ibAPTestSDK.a右擊Show in Finder。
在下圖中你可以看到真機和模擬器對應的靜態(tài)庫和相關文件。
然后我拿到Debug_iphonessimulator里的.a文件,還有和他相關的所有.h文件存放在一個文件夾中。此處我在桌面創(chuàng)建了一個名為MySDK的文件夾。
4. 現(xiàn)在我們那這個文件夾去玩玩了,
你運行之后發(fā)現(xiàn)在模擬器上是沒啥問題的,當你在真機上運行時就會報錯。
哈哈 ?很明顯該庫不支持arm64位架構,也就是不支持真機。回想一下就知道我們創(chuàng)建靜態(tài)庫文件時,只添加了模擬器中的靜態(tài)庫,所以接下來就是合并模擬器和真機的靜態(tài)庫。
五、合并靜態(tài)庫。
打開終端,輸入一下指令即可。
lipo -create ?模擬器中.a的路徑 真機中.a的路徑 -output ?/Users/mac/Desktop/libXXX.a
-output后面有一個空格, 其后跟的路徑就是你想要存放合并靜態(tài)庫的路徑。
六、 ? 把所有的需要封裝的.h和最后生成的.a放在一個文件夾里,然后引入到需要的工程即可。