由於開發的項目中使用了靜態庫文件(.a文件),因此專門對它進行了簡單的學習。靜態庫文件包裝的是經常使用的公共代碼,便於代碼的複用。
1、生成靜態庫文件(static library file)。主要包括以下幾個主要步驟:
(1)創建靜態庫項目
命名爲Stone,並在生成的Stone類裏面添加一個類方法+printInfo,如圖:
未編譯前,Products文件夾下的libStone.a是紅色的,編譯之後變爲黑色,如圖:
注意頂部選擇"iOS device"生成用於真機的靜態庫文件,選擇任意模擬器則生成用於模擬器的靜態庫文件,且只要在選擇"iOS device"時libStone.a才由紅色變爲黑色。
(2)設置release,如下圖:
選擇圖上左側紅圈部分,之後再選擇Edit Scheme,在彈出的對話框中選擇release即可。
(3)編譯後,進入文件夾:
/users/layne/Library/Developer/Xcode/DerivedData如圖:
找到對應的項目的文件夾,Stone-efgkvmcmovsnfcelruigvapvtvwl/Build/Products,可以看到生成了2個文件夾Release-iphone和Release-iphonesimulator,前者裏面的libStone.a用於真機,後者裏面的libStone.a用於模擬器。如圖:
2、爲使用libStone.a的項目進行配置。
使用已創建的項目UIMenuController,爲了便於演示,已將爲真機和爲模擬器使用的.a文件進行了重命名且複製到了桌面上。如下圖:
(1)UIMenuController項目的build Phases->Link Binary with Libraries添加libStoneForIphone.a,並將Stone.h添加到項目裏,如圖:
(2)使用。如圖:
注意:
(1)添加什麼樣的.a文件就只能用對應的方式運行。即添加了libStoneForSimulator.a,則只能用模擬器跑;添加了libStoneForIphone.a,則只能用真機跑。否則會出錯。
(2)解決方法有兩種:
①把兩個.a文件都添加進項目。
②將兩個.a合併爲一個.a文件。
將兩個.a文件合併爲一個的方法如下:
使用命令行即可。終端切換到桌面,然後執行以下命令
lipo -create libStoneForIphone.a libStoneForSimulator.a -output libStoneForAll.a
這樣一來,只要引入libStoneForAll.a文件即可。