實(shí)際開(kāi)發(fā)中離不開(kāi)靜態(tài)庫(kù)的使用,記錄一下
靜態(tài)庫(kù)有兩種蜈敢, .a靜態(tài)庫(kù) 和 .framework靜態(tài)庫(kù)的區(qū)別
.a是一個(gè)純二進(jìn)制文件,.framework中除了有二進(jìn)制文件之外還有資源文件汽抚。
.a文件不能直接使用抓狭,至少要有.h文件配合,.framework文件可以直接使用殊橙。
.a + .h + sourceFile = .framework辐宾。
Workspace 管理項(xiàng)目 添加靜態(tài)庫(kù)
創(chuàng)建
配置如下
加到主工程
配置路徑
導(dǎo)入頭文件 使用
打包靜態(tài)庫(kù) (.a靜態(tài)庫(kù))(包括workspace中的靜態(tài)庫(kù)(.a) 一樣的步驟)
模擬器靜態(tài)庫(kù)打包
1、公開(kāi)接口頭文件
targets->Build Phases->Copy Files->"+"你需要公開(kāi)的頭文件
2膨蛮、設(shè)置適配所有模擬器架構(gòu)(模擬器i386和x86_64)(Build Active Architecture Only )
3叠纹、編譯靜態(tài)庫(kù) (command + B 或 command + R )
右鍵 show in finder4、導(dǎo)入工程 (注意 需要將.a文件和頭文件放到一個(gè)文件夾下)
5敞葛、導(dǎo)入頭文件就可以使用了
真機(jī)靜態(tài)庫(kù)打包
所有流程都跟上面的一樣誉察,只是我們運(yùn)行打包時(shí)要選擇真機(jī)運(yùn)行,你可以選擇自己插上去的真機(jī)惹谐,也可以選擇Generic ios Devices持偏。當(dāng)然不要忘記了設(shè)置支持所有真機(jī)機(jī)型架構(gòu): Build Active Architecture Only 設(shè)為NO。
合并模擬器靜態(tài)庫(kù)和真機(jī)靜態(tài)庫(kù)
分別使用真機(jī)或者Generic iOS Device 和 隨便一個(gè)模擬器運(yùn)行靜態(tài)庫(kù) 得到模擬器靜態(tài)庫(kù)和真機(jī)靜態(tài)庫(kù) 然后在Finder 中打開(kāi)
Show in Finder
通過(guò)命令行合并 (注意 庫(kù)的名稱要一致)
lipo -create 第一個(gè).a文件的絕對(duì)路徑 第二個(gè).a文件的絕對(duì)路徑 -output 最終的.a文件路徑
然后在工程中將這個(gè).a 替換就支持真機(jī)和模擬器了
靜態(tài)庫(kù)之間的引用
1氨肌、如下圖鸿秆,workspace中的靜態(tài)庫(kù)project 引入 主工程包內(nèi)的靜態(tài)庫(kù)
workspace里 Argos是主工程 LJNetwork是一個(gè)靜態(tài)庫(kù)工程 AGFramework.framework是打包好并導(dǎo)入到主工程的靜態(tài)庫(kù)
現(xiàn)在LJNetwork要引用AGFramework.framework庫(kù)
只需要在LJNetwork的Build Setting —> User Header Search Paths 中 拉入AGFramework.framework中的Headers文件夾的路徑
2、兩個(gè)靜態(tài)庫(kù)工程之間的引用
靜態(tài)庫(kù)LJNetwork引用 靜態(tài)庫(kù)LJFoundation的文件
配置如下
3 靜態(tài)庫(kù)引用pods中的三方庫(kù)
靜態(tài)庫(kù)LJNetwork要引用pods中的AFNetworking 如下設(shè)置
個(gè)人博客地址:https://youyou0909.github.io