UmbrellaFramework(一)創(chuàng)建基礎(chǔ)framework

開發(fā)過程中會遇到各種各樣的情況,比如需要將幾個已經(jīng)封裝好的framework封裝成一個磁椒,統(tǒng)一提供出去堤瘤,封裝的這種framework就是umbrellaframework。Apple的官方文檔中明確提到了不建議自己去創(chuàng)建umbrellaframework浆熔,但是既然遇到了這種情況本辐,還是動手試一試。

首先先引入Apple的 Guidelins for Creating Frameworks 的一段

Don’t Create Umbrella Frameworks

While it is possible to create umbrella frameworks using Xcode, doing so is unnecessary for most developers and is not recommended. Apple uses umbrella frameworks to mask some of the interdependencies between libraries in the operating system. In nearly all cases, you should be able to include your code in a single, standard framework bundle. Alternatively, if your code was sufficiently modular, you could create multiple frameworks, but in that case, the dependencies between modules would be minimal or nonexistent and should not warrant the creation of an umbrella for them

文章將分三個部分逐步創(chuàng)建并使用UmbrellaFramework

  • SubFramework 創(chuàng)建一個基礎(chǔ)framework
  • UmbrellaFramework framework里封裝framework
  • UmbrellaFrameworkDemo 使用demo

本篇是第一部分医增,這一部分將會一步步創(chuàng)建一個基礎(chǔ)framework慎皱,那么伸伸懶腰,我們開始吧叶骨!

demo地址:https://github.com/huibaoer/Demo_UmbrellaFramework

創(chuàng)建一個基礎(chǔ)的framework

1.創(chuàng)建一個framework工程:Subframework

SubFramework_1

2.添加類SubSayHello宝冕,添加sayHello方法

SubFramework_2

3.在SubFramework.h頭文件中導(dǎo)入SubSayHello.h

SubFramework_3

4.將SubSayHello.h添加到公共Header中

SubFramework_4

5.Architectures添加armv7s

SubFramework_5

6.連接選項 Mach-O Type 選擇Static Library靜態(tài)庫

SubFramework_6

7.生成通用framework

到了這一步framework已經(jīng)基本完成了,只需要生成最終需要使用的framework了邓萨。一般有兩種方式生成:

  • 分別在模擬器和真機下運行工程地梨,分別導(dǎo)出兩個運行出來的framework,用命令行合并成一個通用的framework
  • 在工程中添加腳本缔恳,運行腳本生成通用framework

兩種方式介紹的文章很多宝剖,這里不做過多解釋,下面使用第二種添加腳本的方式生成framework

7.1為SubFramework工程添加Target -> Aggregate
SubFramework_7
7.2在SubFramework新添加的Target中添加腳本

腳本內(nèi)容如下:

# Sets the target folders and the final framework product.

# 如果工程名稱和Framework的Target名稱不一樣的話歉甚,要自定義FMKNAME

# 例如: FMK_NAME = "MyFramework"

FMK_NAME=${PROJECT_NAME}

# Install dir will be the final output to the framework.

# The following line create it in the root folder of the current project.

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

# Working dir will be deleted after the framework creation.

WRK_DIR=build

DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework

SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework

# -configuration ${CONFIGURATION}

# Clean and Building both architectures.

xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build

xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build

# Cleaning the oldest.

if [ -d "${INSTALL_DIR}" ]

then

rm -rf "${INSTALL_DIR}"

fi

mkdir -p "${INSTALL_DIR}"

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

# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.

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

rm -r "${WRK_DIR}"

open "${INSTALL_DIR}"
SubFramework_8
7.3運行新添加的Target万细,會自動彈出窗口,包含了已經(jīng)生成好的framework纸泄。大功告成赖钞!

8.最后,可以檢查一下生成的framework信息聘裁,命令行執(zhí)行如下命令雪营,注意cd到SubFramework的所在目錄

lipo -info  SubFramework.framework/SubFramework

正常情況下結(jié)果如下,支持的架構(gòu)已經(jīng)顯示出來
Architectures in the fat file: SubFramework.framework/SubFramework are: armv7 armv7s i386 x86_64 arm64

當(dāng)然衡便,也可以自己建一個demo工程献起,將SubFramework導(dǎo)入洋访,試著調(diào)用一下 SubSayHello 的 sayHello 方法。相信會愉快的收到響應(yīng)的谴餐,?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末姻政,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子岂嗓,更是在濱河造成了極大的恐慌汁展,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厌殉,死亡現(xiàn)場離奇詭異善镰,居然都是意外死亡,警方通過查閱死者的電腦和手機年枕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門炫欺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人熏兄,你說我怎么就攤上這事品洛。” “怎么了摩桶?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵桥状,是天一觀的道長。 經(jīng)常有香客問我硝清,道長辅斟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任芦拿,我火速辦了婚禮士飒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蔗崎。我一直安慰自己酵幕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布缓苛。 她就那樣靜靜地躺著芳撒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪未桥。 梳的紋絲不亂的頭發(fā)上笔刹,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音冬耿,去河邊找鬼舌菜。 笑死,一個胖子當(dāng)著我的面吹牛淆党,可吹牛的內(nèi)容都是我干的酷师。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼染乌,長吁一口氣:“原來是場噩夢啊……” “哼山孔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起荷憋,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤台颠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后勒庄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體串前,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年实蔽,在試婚紗的時候發(fā)現(xiàn)自己被綠了荡碾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡局装,死狀恐怖坛吁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铐尚,我是刑警寧澤拨脉,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站宣增,受9級特大地震影響玫膀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜爹脾,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一帖旨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灵妨,春花似錦碉就、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烹吵,卻和暖如春碉熄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肋拔。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工锈津, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凉蜂。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓琼梆,卻偏偏與公主長得像性誉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子茎杂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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