iOS-開發(fā)自己的framework

iOS開發(fā)之制作framework

什么是framework

Framework是資源的集合,將靜態(tài)庫(iOS8以后可以是動態(tài)庫)和其頭文件包含到一個結(jié)構(gòu)中麻削,讓Xcode可以方便地把它納入到你的項目中蒸痹。
分為真機—Debug(調(diào)試)版本、真機—Release(發(fā)布)版本呛哟、模擬器—Debug版本叠荠、模擬器—Release版本;開發(fā)中一般都打包Release(發(fā)布)版本扫责,將真機和模擬器版本合并榛鼎,提供外界。
在項目開發(fā)的過程中,例如兩個公司之間業(yè)務(wù)交流,不可能把源代碼都發(fā)送給另一個公司,這時候?qū)⑺矫軆?nèi)容打包成framework只嚣,別人只能調(diào)用接口绑榴,而不能知道其中實現(xiàn)的細節(jié)。
framework對CPU架構(gòu)的支持,首先了解iOS設(shè)備CPU架構(gòu)方面的知識,ARM是微處理器行業(yè)的一家知名企業(yè),arm處理器以體積小和高性能的優(yōu)勢在嵌入式設(shè)備中廣泛使用拾碌,幾乎所有手機都是使用它的。
模擬器:iphone4s-5 : i386 街望, iphone5s-6plus : x86_64校翔。
真機:iphone3gs-4s : armv7 , iphone5-5c : armv7s (靜態(tài)庫只要支持了armv7灾前,就可以跑在armv7s的架構(gòu)上)防症, iphone5s-6plus : arm64。
armv6, armv7, armv7s是ARM CPU的不同指令集哎甲,原則是向下兼容的蔫敲。例如iPhone4S CPU支持armv7, 但它同時兼容armv6,只是使用armv6指令可能無法充分發(fā)揮它的特性炭玫。

怎么制作framework

我們將自己自定義的一個控件制作成framwork供別人使用為例奈嘿,來展示framework的制作過程。

  1. 打開Xcode創(chuàng)建一個framework工程吞加。


    839C9C5D-A8AB-4134-B7B8-94E719A86729.png
0539F278-CD69-46C3-A36A-351A5D32E969.png

2.修改一些配置信息裙犹,生成支持所有架構(gòu)的版本。

FCC504B8-4219-4A36-A87D-2A869C3DF22A.png
6F66B5E4-EB40-4DB1-AC8C-24AF7420B927.png
FCC504B8-4219-4A36-A87D-2A869C3DF22A.png

3.將之前寫好的控件源文件拖進工程衔憨,并做一些配置叶圃,主要是配置一下那些文件要暴露給別人使用,一般頭文件需要暴露践图,實現(xiàn)文件不需要掺冠。

8185E637-2A7E-48DC-802B-2F2AFA33E7EE.png
DBA4F6DD-B126-4AC9-9CBF-D58BFE4F2015.png

4.編譯,要分別針對模擬器和真機進行編譯平项。(下面有更加簡單的方法制作通用framework)

AE6AB273-6EDB-4BE4-A39B-CE966998F69B.png
BAC0E177-2B7A-4C75-948C-BBCAC6EA55C0.png

5.編譯成功就會在工程的Products組下有一個黑色的xxxxx.framework的文件赫舒,如果編譯失敗是紅色的,紅色表示沒有生成闽瓢。


F4FB15E9-FA26-49BD-9B67-A4771217A11A.png
ADA6CFAC-A931-479E-ACC1-0012C17B2A95.png

6.制作通用的framework,以上幾步分別生成真機和模擬器的framework心赶,接下來生成一個通用的扣讼。

(1) cd進入Debug-iphoneos
輸入終端命令:
lipo -info ./WQJButton.framework/WQJButton

顯示信息如下: (真機支持的架構(gòu)armv7和arm64)

0B4A7FD5-016E-48E7-BE6D-1104F3B58903.png

(2) cd進入Debug-iphonesimulator
輸入終端命令:
lipo -info ./WQJButton.framework/WQJButton

顯示信息如下: (模擬器支持的架構(gòu)i386 x86_64)

F74D0161-7CB9-4C57-964E-593037F96292.png

(3) cd進入Products
輸入終端命令:
lipo -create ./Debug-iphoneos/WQJButton.framework/WQJButton ./Debug-iphonesimulator/WQJButton.framework/WQJButton -output ./WQJButton

生成新的文件

4AAF579E-621E-4A88-BB6A-888BE5772F9F.png

將新的文件替換掉原來的

A182BEE8-27AE-4952-9191-220F4CE32857.png

(4)查看合并后支持的架構(gòu)
輸入終端命令:

20419535-15F8-40D4-837B-48421D14AF23.png
制作通用的framework(另一種更加簡單的方法)
3E654525-C76A-448C-831B-655059EB9680.png
if [ "${ACTION}" = "build" ]

then

INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework

DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework

SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework

if [ -d "${INSTALL_DIR}" ]

then

rm -rf "${INSTALL_DIR}"

fi

mkdir -p "${INSTALL_DIR}"

cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"

#ditto "${DEVICE_DIR}/Headers"   "${INSTALL_DIR}/Headers"

lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"

#open "${DEVICE_DIR}"

open "${SRCROOT}/Products"

fi
ECCA4988-DDB5-49D3-9D4A-BE951A654805.png

完成后按cmd+B自動彈出生成好的framework

7EBF4913-2D53-4F12-B618-0E493FF1C398.png
13CAF1E5-2197-4072-846C-FC1A9CD719F7.png

8.導(dǎo)入framework使用,發(fā)現(xiàn)報錯(方法找不到)

140BBFDA-FDCA-4C23-922B-ABC083CD33FD.png

原來是framework中有分類缨叫,在導(dǎo)入framework椭符, Other Linker Flags中加入-ObjC就可以了

B1C2FE79-E85B-468D-9ADD-3899E5237B4A.png
結(jié)束語:到此你就可以愉快的使用自己的framework了荔燎,想想還有點小激動~
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市销钝,隨后出現(xiàn)的幾起案子有咨,更是在濱河造成了極大的恐慌,老刑警劉巖蒸健,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件座享,死亡現(xiàn)場離奇詭異,居然都是意外死亡似忧,警方通過查閱死者的電腦和手機渣叛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盯捌,“玉大人淳衙,你說我怎么就攤上這事〗戎” “怎么了箫攀?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長幼衰。 經(jīng)常有香客問我匠童,道長,這世上最難降的妖魔是什么塑顺? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任汤求,我火速辦了婚禮,結(jié)果婚禮上严拒,老公的妹妹穿的比我還像新娘扬绪。我一直安慰自己,他們只是感情好裤唠,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布挤牛。 她就那樣靜靜地躺著,像睡著了一般种蘸。 火紅的嫁衣襯著肌膚如雪墓赴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天航瞭,我揣著相機與錄音诫硕,去河邊找鬼。 笑死刊侯,一個胖子當著我的面吹牛章办,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼藕届,長吁一口氣:“原來是場噩夢啊……” “哼挪蹭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起休偶,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤梁厉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后踏兜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體词顾,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年庇麦,在試婚紗的時候發(fā)現(xiàn)自己被綠了计技。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡山橄,死狀恐怖垮媒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情航棱,我是刑警寧澤睡雇,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站饮醇,受9級特大地震影響它抱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜朴艰,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一观蓄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祠墅,春花似錦侮穿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狗准,卻和暖如春克锣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腔长。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工袭祟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饼酿。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓榕酒,卻偏偏與公主長得像胚膊,于是被迫代替她去往敵國和親故俐。 傳聞我的和親對象是個殘疾皇子想鹰,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

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