iOS 製作靜態庫(.a檔案)(Xcode9)

weixin_34146805發表於2018-02-24

今天看到群裡面又說在說靜態庫,我看了也手癢癢想自己試試怎麼製作的,其實所謂靜態庫就是把.m給封裝起來不讓別人看到你是怎麼實現的,然後把.h檔案暴露出來, 讓使用者呼叫的,通俗點就是我們平時使用的那個只有標頭檔案的 SDK(百度,高德API,支付寶,微信 API 等)
話不多說,下面開始

第一步: 需要新建一個專案
5345406-940889932b777077.png
螢幕快照 2018-02-24 下午6.02.42.png

剛建好專案 libStaticText.a 是紅色的如圖
5345406-4061d539467525a4.png
螢幕快照 2018-02-24 下午6.05.37.png

第二步:

在StaticText.h 申明方法並在. m 檔案中實現
5345406-762c39cdd81464b3.png
螢幕快照 2018-02-24 下午6.08.40.png
5345406-422757c1c4bec37d.png
螢幕快照 2018-02-24 下午6.08.48.png

第三步, 配置下工程

5345406-f57a5ee32c521f9d.png
737D22C3-5985-409E-9293-78ED87A1116A.png
5345406-4da801d219a1f9c2.png
9A16A5C6-9C99-46BD-BF81-3CBD954D9EA0.png

此時在編譯下(command+B) StaticText.a 就會變黑了 如圖


5345406-e3ec0faed6a4df48.png
螢幕快照 2018-02-24 下午6.13.53.png

在檢查下這裡 在之前版本的 xcode 是需要自己新增的目前不需要的
5345406-68b783d398b1c515.png
18CC2AB8-9343-45D6-906D-8F2B34F385F9.png

第四步 選擇 Edit Scheme 選擇 Release 在編譯下(command+B)


5345406-722e8e48f568735f.png
螢幕快照 2018-02-24 下午6.17.43.png
5345406-dd3762c1d7fe41a8.png
螢幕快照 2018-02-24 下午6.19.46.png

之後 (這裡特別注意一點)需要選擇真機和模擬器 分別編譯下(command+B)

第五步 我們需要選中 libStaticText.a 然後 Show in finder 可以在 finder 下面看到下面3中(其實應該有4中還有一張真機下的 Debug) 因為 Debug 我們只是測試用的所以我們就需要Release 下面的真機和模擬器就可以了
5345406-1b5146b287817fdb.png
螢幕快照 2018-02-24 下午6.24.03.png

之後在新建個資料夾把Release-iphoneos 和Release-iphonesimulator 裝起來

5345406-8b9643ef39b116ba.png
螢幕快照 2018-02-24 下午6.30.15.png

第六步 開啟終端把Release-iphoneos 和Release-iphonesimulator 裡面的. a 檔案合併成一個檔案

lipo -create /Users/wangyu/Desktop/text/Release-iphoneos/libStaticText.a /Users/wangyu/Desktop/text/Release-iphonesimulator/libStaticText.a -output /Users/wangyu/Desktop/text/libStaticText.a

格式: lipo -create 真機下的.a路徑(空格) 模擬器下的.a路徑(空格) -output (空格) 合成後的路徑及名稱 
注意 :空格很重要

就這樣之前資料夾下面就會多一個. a 檔案


5345406-27d4ba4f2288f6f5.png
螢幕快照 2018-02-24 下午6.30.22.png

第七步 在之前 finder Release 夏敏 copy 一個. h 檔案出來和libStaticText.a放一起並拖進你需要的工程中去
5345406-ed3162444ffdfaef.png
螢幕快照 2018-02-24 下午6.32.25.png
5345406-bfa91dd9d1ee52bb.png
螢幕快照 2018-02-24 下午6.34.51.png

此時你可以看到你製作的靜態庫了
5345406-31b859c4af8005fd.png
螢幕快照 2018-02-24 下午6.35.05.png

第八步 需要匯入標頭檔案 然後在呼叫之前的方法能列印出你之前寫的就說明成功了("測試靜態庫")

#import "StaticText.h"

StaticText *text = [[StaticText alloc]init];
[text sayHello];
5345406-eec2ce75c7bfbc38.png
9222BE57-F3F0-4365-832E-3D21EB6463B8.png

在前面還寫了有關靜態庫靜態庫FrameWork檔案製作方法

相關文章