iOS打包.a靜態庫檔案(入門)

程式鬼發表於2018-01-18

一  前言

近日沒事兒幹,就在看了下關於靜態庫打包的相關資料(僅供入門,大神繞道),所謂庫其實就是程式碼塊的集合,可簡單的分為開源庫,和閉源庫(顧名思義就是開源和不開源),今天學的.a屬於閉源庫,因為.a實際上是一個二進位制集合,庫還可以分為靜態庫和動態庫,.a,framework屬於靜態庫(自己建立的),以".dylib"或者“.framework”為檔案字尾名結尾為動態庫(比如系統的)額.....好像跑題了,開始我們正式的入門吧!GO~

二   入門


iOS打包.a靜態庫檔案(入門)
本文使用Xcode8.3.3
iOS打包.a靜態庫檔案(入門)
選擇建立靜態庫


iOS打包.a靜態庫檔案(入門)
建立檔案

建立一個test_HelloWord(這裡繼承的是NSObject),沒有編譯的.a是紅色的(無效,不存在的檔案)

iOS打包.a靜態庫檔案(入門)
方法宣告
iOS打包.a靜態庫檔案(入門)
方法實現

三 注意點

          下面重點來了,敲黑板!!!!

iOS打包.a靜態庫檔案(入門)
architecture

architecture 字面意思 只編譯活躍的架構  NO就是所有,YES是隻有當前活躍的 ,這裡選擇所有(debug,release)


iOS打包.a靜態庫檔案(入門)
選擇編譯

然後編譯就可以了,注意不是執行,分別選擇真機和模擬器(如果你不選模擬器,當然也可以)

iOS打包.a靜態庫檔案(入門)
拿到編譯後的靜態庫


iOS打包.a靜態庫檔案(入門)
上面是真機,下面是模擬器

既然拿到了庫是不是就成功了呢?如果只支援一種到這裡是結束了,可以下課了,但是如果想同時支援真機和模擬器需要將兩個庫合併

在終端使用 lipo 命令

lipo -info  庫的路徑  -----------檢視庫支援什麼架構

lipo -create 要合併的庫1  要合併的庫2 -output合併後的靜態庫

例子:lipo -create lipo -create /Users/apple/libtest_HelloWord.a  /Users/apple//libtest_HelloWord.a -output helloLib.a (合併檔案helloLib.a)

這樣合併出來的.a靜態庫就會支援所有的編譯環境了。

之後再加上所有的.h檔案就可以使用了。

四  測試

iOS打包.a靜態庫檔案(入門)
測試

包含標頭檔案,並呼叫helloWord方法。

五  總結

很簡單的一個靜態庫。程式設計是一條漫長的道路,前進的路上有你會更佳精彩,謝謝大家!

相關文章