標籤:static library
由於開發的項目中使用了靜態庫檔案(.a檔案),因此專門對它進行了簡單的學習。靜態庫檔案封裝的是經常使用的公用代碼,便於代碼的複用。
1、產生靜態庫檔案(static library file)。主要包括以下幾個主要步驟:
(1)建立靜態庫項目
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/72/25/wKiom1Xdd8iTXsMiAAFq3ICkesI772.jpg" title="QQ20150826-1@2x.png" alt="wKiom1Xdd8iTXsMiAAFq3ICkesI772.jpg" />
命名為Stone,並在產生的Stone類裡面添加一個類方法+printInfo,
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/72/25/wKiom1XdeX-SvQCiAAIG0e6CVKo709.jpg" style="float:none;" title="QQ20150826-2@2x.png" alt="wKiom1XdeX-SvQCiAAIG0e6CVKo709.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/72/21/wKioL1Xde5fiL7VvAAI3UmOn2r4992.jpg" style="float:none;" title="QQ20150826-3@2x.png" alt="wKioL1Xde5fiL7VvAAI3UmOn2r4992.jpg" />
未編譯前,Products檔案夾下的libStone.a是紅色的,編譯之後變為黑色,
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/72/22/wKioL1XdfRbw4UOoAAFxmnI2kf0490.jpg" title="QQ20150826-4@2x.png" alt="wKioL1XdfRbw4UOoAAFxmnI2kf0490.jpg" />
注意頂部選擇"iOS device"產生用於真機的靜態庫檔案,選擇任意模擬器則產生用於模擬器的靜態庫檔案,且只要在選擇"iOS device"時libStone.a才由紅色變為黑色。
(2)設定release,如:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/72/22/wKioL1Xdf8fT8GCLAAKSRSQZdTw502.jpg" title="QQ20150826-10@2x.png" alt="wKioL1Xdf8fT8GCLAAKSRSQZdTw502.jpg" />
選擇圖上左側紅圈部分,之後再選擇Edit Scheme,在彈出的對話方塊中選擇release即可。
(3)編譯後,進入檔案夾:
/users/layne/Library/Developer/Xcode/DerivedData
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/72/22/wKioL1XdgGeCNdvfAAI8qHrlNEQ571.jpg" title="QQ20150826-11@2x.png" alt="wKioL1XdgGeCNdvfAAI8qHrlNEQ571.jpg" />
找到對應的項目的檔案夾,Stone-efgkvmcmovsnfcelruigvapvtvwl/Build/Products,可以看到產生了2個檔案夾Release-iphone和Release-iphonesimulator,前者裡面的libStone.a用於真機,後者裡面的libStone.a用於模擬器。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/72/22/wKioL1XdgaCyxZUQAABz7qTC4YA613.jpg" title="QQ20150826-12@2x.png" alt="wKioL1XdgaCyxZUQAABz7qTC4YA613.jpg" />
2、為使用libStone.a的項目進行配置。
使用已建立的項目UIMenuController,為了便於示範,已將為真機和為模擬器使用的.a檔案進行了重新命名且複製到了案頭上。如:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/72/22/wKioL1XdgujBwrI4AAEFOfsLHjM527.jpg" title="QQ20150826-14@2x.png" alt="wKioL1XdgujBwrI4AAEFOfsLHjM527.jpg" />
(1)UIMenuController項目的build Phases->Link Binary with Libraries添加libStoneForIphone.a,並將Stone.h添加到項目裡,
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/72/22/wKioL1XdhFyBpwGBAAIMUOzbQo8366.jpg" title="QQ20150826-15@2x.png" alt="wKioL1XdhFyBpwGBAAIMUOzbQo8366.jpg" />
(2)使用。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/72/26/wKiom1XdgrbyRhwUAAiOPXCmqys017.jpg" title="QQ20150826-17@2x.png" alt="wKiom1XdgrbyRhwUAAiOPXCmqys017.jpg" />
注意:
(1)添加什麼樣的.a檔案就只能用對應的方式運行。即添加了libStoneForSimulator.a,則只能用模擬器跑;添加了libStoneForIphone.a,則只能用真機跑。否則會出錯。
(2)解決方案有兩種:
①把兩個.a檔案都添加進項目。
②將兩個.a合并為一個.a檔案。
將兩個.a檔案合并為一個的方法如下:
使用命令列即可。終端切換到案頭,然後執行以下命令
lipo -create libStoneForIphone.a libStoneForSimulator.a -output libStoneForAll.a
這樣一來,只要引入libStoneForAll.a檔案即可。
本文出自 “Layne的學習園地” 部落格,請務必保留此出處http://laynestone.blog.51cto.com/9459455/1688537
iOS項目引用靜態庫檔案.a