iOS 創(chuàng)建靜態(tài)庫

一、靜態(tài)庫和動態(tài)庫的區(qū)別

靜態(tài)庫和動態(tài)庫是相對編譯期和運行期的,在存在形式上,靜態(tài)庫是以 .a 和 .framework 形式存在,動態(tài)庫是以.dylib 和 .framework形式存在的;在使用上,鏈接時,靜態(tài)庫會被完整地復(fù)制到可執(zhí)行文件中,被多次使用就有多份冗余拷貝,而動態(tài)庫鏈接時不復(fù)制,程序運行時由系統(tǒng)動態(tài)加載到內(nèi)存,供程序調(diào)用,系統(tǒng)只加載一次,多個程序共用,節(jié)省內(nèi)存。

二、關(guān)于靜態(tài)庫

靜態(tài)庫分為:真機—Debug(調(diào)試)版本、 真機—Release(發(fā)布)版本、模擬器—Debug版本、模擬器—Release版本,開發(fā)中一般都打包Release(發(fā)布)版本,將真機和模擬器版本合并,提供外界。剛開始不明白這個,然后使用的Debug版本生成點a文件,在項目中使用一直報錯。

屏幕快照 2016-12-10 11.51.05 AM.png

三、創(chuàng)建.a靜態(tài)庫

1、新建項目,點擊iOS—Framework&—Cocoa Touch Static Library

1.png

給工程命名stone-bleApi-1.7.8

2.png

2、系統(tǒng)自動生成以工程名命名的.h和.m文件,可自定義的在目錄下添加或刪除文件,注意目錄下Products文件夾有一個.a文件為紅色,說明文件并不存在。這里我們將系統(tǒng)生成的.h和.m文件刪除。

3.png

刪除自動生成的.h和.m文件,然后將已經(jīng)寫好的類拖進來,如下圖所示:

4.png

3、點擊Xcode左上角,選擇Edit Scheme,Build Configuration下選擇Release,先注意檢查下面Release是否為NO:Yes表示只編譯選中模擬器設(shè)備對應(yīng)的架構(gòu),No則為編譯所有模擬器設(shè)備支持的cup架構(gòu)(Debug版本同理),選擇NO,然后分別在模擬器和真機下Command+B編譯一下,會看到Products文件夾下的.a文件變?yōu)楹谏@個.a文件就是我們想要得到的靜態(tài)庫,這里會出現(xiàn)一個問題你先編譯的模擬器會發(fā)現(xiàn).a依然是紅色,你需要模擬器和真機都編譯后.a才會變成黑色,這應(yīng)該是Xcode本身的問題

5.png
6.png
7.png
8.png

4、分別選用真機模式編譯和模擬器編譯

9.png
10.png

5、找到編譯之后生成的.a文件,合并真機生成的.a文件和模擬器生成的.a文件,在終端輸入以下命令行:lipo -create 模擬器.a文件的路徑 真機.a文件的路徑 -output 合并后的保存路徑

11.png
12.png
13.png
14.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、簡單介紹 1.1. 什么是庫1.2. 庫的分類1.3. 靜態(tài)庫和動態(tài)庫 二、創(chuàng)建靜態(tài)庫 2.1. 創(chuàng)建.a 靜...
    C丶丶H閱讀 710評論 1 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • 參考文章:http://my.oschina.net/leejan97/blog/284193 首先不得不說,這篇...
    管樂_VICTOR閱讀 2,097評論 2 1
  • 來北京一百多天了,每天上下班的路上總能看到她,她那么端莊、典雅、漂亮,難免讓人浮想聯(lián)翩。我對她也仰慕已久,啥時候才...
    菖蒲生活閱讀 543評論 3 7
  • shell中的特殊字符 注釋 以 # 開頭的行是一行注釋。 #號可以在本行的空白或者tab后面 注釋也可以嵌入在管...
    StarShift閱讀 188評論 0 0