国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > iOS > 正文

iOS靜態(tài)庫(kù)開(kāi)發(fā)

2019-11-09 18:50:28
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

簡(jiǎn)介

在企業(yè)開(kāi)發(fā)中,一些核心技術(shù)或者常用框架,出于安全性和穩(wěn)定性的考慮,不想被外界知道,所以會(huì)把核心代碼打包成靜態(tài)庫(kù),只暴露頭文件給程序員使用(比如:友盟、百度地圖等第三方的sdk)。

靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的存在形式

靜態(tài)庫(kù): .a 和 .framework動(dòng)態(tài)庫(kù): .dylib 和 .framework

靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的區(qū)別

靜態(tài)庫(kù):鏈接時(shí),靜態(tài)庫(kù)會(huì)被完整地復(fù)制到可執(zhí)行文件中,被多次使用就有多份冗余拷貝動(dòng)態(tài)庫(kù):鏈接時(shí)不復(fù)制,程序運(yùn)行時(shí)由系統(tǒng)動(dòng)態(tài)加載到內(nèi)存,供程序調(diào)用,系統(tǒng)只加載一次,多個(gè)程序共用,節(jié)省內(nèi)存

注意:項(xiàng)目中如果使用了動(dòng)態(tài)庫(kù),會(huì)被蘋(píng)果拒絕。

靜態(tài)庫(kù)文件的版本(4種)

真機(jī)-Debug版本 真機(jī)-Release版本 模擬器-Debug版本 模擬器-Release版本

- debug(調(diào)試)版本

1.含完整的符號(hào)信息,以方便調(diào)試2.不會(huì)對(duì)代碼進(jìn)行優(yōu)化

- Release(發(fā)布)版本

1.不會(huì)包含完整的符號(hào)信息 2.的執(zhí)行代碼是進(jìn)行過(guò)優(yōu)化的 3.的大小會(huì)比Debug版本的略小 4.在執(zhí)行速度方面,Release版本會(huì)更快些(但不意味著會(huì)有顯著的提升)

我們一般開(kāi)發(fā)中都打包Release(發(fā)布)版本,提供外界。

設(shè)備的CPU架構(gòu)簡(jiǎn)介(補(bǔ)充知識(shí))

模擬器: 4s~5 : i386 5s~6plus : x86_64

真機(jī): 3gs~4s : armv7 5~5c : armv7s (靜態(tài)庫(kù)只要支持了armv7,就可以跑在armv7s的架構(gòu)上) 5s~6plus : arm64

制作靜態(tài)庫(kù)-Debug版

1、新建項(xiàng)目這里寫(xiě)圖片描述

這里寫(xiě)圖片描述 2、添加靜態(tài)庫(kù)并命名 這里寫(xiě)圖片描述 這里寫(xiě)圖片描述 這里寫(xiě)圖片描述

3、需要打包到靜態(tài)庫(kù)的代碼,放在這個(gè)文件夾內(nèi) 這里寫(xiě)圖片描述

這里寫(xiě)圖片描述 4、需要暴露給外界的文件(接口) 這里寫(xiě)圖片描述 5、打包支持模擬器和真機(jī)的靜態(tài)庫(kù)(分別選擇真機(jī)和模擬器運(yùn)行,就會(huì)生成對(duì)應(yīng)的靜態(tài)庫(kù)) 這里寫(xiě)圖片描述 6、查看打包好的靜態(tài)庫(kù) 這里寫(xiě)圖片描述 兩個(gè)文件夾,里面的.a文件就是打包好的靜態(tài)庫(kù) Debug-iphoneos:真機(jī) Debug-iphonesimulator:模擬器 可以用下面的命令查看靜態(tài)庫(kù)支持的CPU架構(gòu)(可查看上面描述的CPU架構(gòu)類(lèi)型) lipo –info xxx.a 查看發(fā)現(xiàn)模擬器的靜態(tài)庫(kù)缺少部分架構(gòu),原因是 下面Debug:Yes表示值編譯選中模擬器對(duì)應(yīng)的架構(gòu),No則為編譯所有模擬器支持的CPU架構(gòu)(將Debug的Yes狀態(tài)改為No即可) 這里寫(xiě)圖片描述 修改完后,重新編譯。 7、在本項(xiàng)目中對(duì)靜態(tài)庫(kù)進(jìn)行調(diào)試,測(cè)試運(yùn)行,發(fā)現(xiàn)報(bào)錯(cuò)。 這里寫(xiě)圖片描述 原因: 需要導(dǎo)入靜態(tài)庫(kù)(編譯即可運(yùn)行成功) 這里寫(xiě)圖片描述 8、同時(shí)支持真機(jī)與模擬器的靜態(tài)庫(kù)(需要合并) 真機(jī)和模擬器的靜態(tài)庫(kù),是不一樣的,不能同時(shí)使用在真機(jī)和模擬器上,但是要滿(mǎn)足同時(shí)真機(jī)和模擬器使用時(shí),就要對(duì)編譯好的兩個(gè)靜態(tài)庫(kù)進(jìn)行合并。

合并好壞: 好:開(kāi)發(fā)過(guò)程中既可以在真機(jī)上調(diào)試,也可以在模擬器上調(diào)試。 壞:如果靜態(tài)庫(kù)太大,合并打包后,會(huì)非常大,因此很多第三方的靜態(tài)庫(kù)的.a是區(qū)分版本的。

合并產(chǎn)生新的靜態(tài)庫(kù): lipo –create Debug-iphoneos/xxx.a Debug-iphonesimulator/xxx.a –output xxx.a 在終端輸入以上命令和對(duì)應(yīng)的文件名,創(chuàng)建一個(gè)合并后的新文件。 這里寫(xiě)圖片描述 這里寫(xiě)圖片描述 9、把合并好的靜態(tài)庫(kù)和外界訪(fǎng)問(wèn)的文件拉入新工程中,即可使用。 CanculationLibrary為自建文件夾 這里寫(xiě)圖片描述 這里寫(xiě)圖片描述 此時(shí)真機(jī)和模擬器都能成功運(yùn)行,Debug版本靜態(tài)庫(kù),制作完成。

制作靜態(tài)庫(kù)-Release版

跟Debug版步驟一樣,只不過(guò)在編譯時(shí),改下面的選項(xiàng)即可。 和制作Debug版本一模一樣,前面8步制作和第9步加入工程使用都一模一樣,即:將Debug版的也可以用做release版,只需要在編譯前進(jìn)行下面設(shè)置。 這里寫(xiě)圖片描述 這里寫(xiě)圖片描述 這里寫(xiě)圖片描述

制作靜態(tài)庫(kù).framework版

制作步驟和制作.a靜態(tài)庫(kù),基本一致,但是要注意一下幾點(diǎn): 1、在第2項(xiàng)選擇的時(shí)候選擇framework 這里寫(xiě)圖片描述 2、在編譯前將mach-O Type屬性更改為Static Library 這里寫(xiě)圖片描述 3、合并靜態(tài)庫(kù)時(shí),選擇.framework文件里的xxx文件。如: 這里寫(xiě)圖片描述 這里寫(xiě)圖片描述 這里寫(xiě)圖片描述 其余步驟同制作.a靜態(tài)庫(kù)一樣,將制作好的framework文件拉入項(xiàng)目中,.framework靜態(tài)庫(kù)制作完成。

本文參照下面的博客,進(jìn)行實(shí)踐學(xué)習(xí)后,對(duì)一些細(xì)節(jié)方面進(jìn)行了更詳細(xì)的說(shuō)明、對(duì)舊版本Xcode某些截圖的變化,進(jìn)行了重新修改。 http://www.jianshu.com/p/8f5b9855efb8?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=QQ


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 平果县| 镇原县| 河曲县| 沅江市| 稻城县| 水富县| 松桃| 大竹县| 阳新县| 玉树县| 哈尔滨市| 凤翔县| 图木舒克市| 定兴县| 孟连| 汤阴县| 元朗区| 浮梁县| 台北县| 开封县| 无棣县| 许昌县| 揭西县| 连云港市| 东台市| 慈利县| 南郑县| 曲靖市| 蒙阴县| 德阳市| 龙南县| 平遥县| 云霄县| 桓台县| 云阳县| 西峡县| 康马县| 桐柏县| 贵定县| 安平县| 沈丘县|