手把手教你制作動(dòng)態(tài)庫.framework竹捉,并實(shí)現(xiàn)動(dòng)態(tài)加載

因?yàn)轫?xiàng)目原因,為方便以后維護(hù)需要制作動(dòng)態(tài)庫擅耽,其實(shí)跟制作spec文件作用差不多吧活孩,只不過.framework可以實(shí)現(xiàn)動(dòng)態(tài)或遠(yuǎn)程加載類似于熱更新吧,不知道有沒有先驅(qū)者試過沒有乖仇,查看網(wǎng)上資料說是不允許的憾儒,先不管行不行,我們先會(huì)再說∧松常現(xiàn)在可是進(jìn)入主題

第一步 起趾,創(chuàng)建一個(gè)新的Project 注意這里不要選Application啦而是 Framework&Library

第二步 我們創(chuàng)建一個(gè)繼承與NSObject 類,這里以testProject 為例 并提供一個(gè)實(shí)例方法以供調(diào)用警儒,并創(chuàng)建一個(gè)控制器 為后面動(dòng)態(tài)加載庫做準(zhǔn)備 并設(shè)置控制器頁面顏色為紅色

在這一步我們需要把一些展示出來共有的頭文件加入Public 里,剛開始的.h文件都在Project里训裆,可以直接按住向上拖入即可

此時(shí)我們已經(jīng)創(chuàng)建好一個(gè)動(dòng)態(tài)庫了 ,但是有一個(gè)小問題 當(dāng)你在真機(jī)編譯 跟在模擬器編譯會(huì)生成兩個(gè)庫 一個(gè)為模擬器使用一個(gè)為真機(jī)使用,很是不方便蜀铲,牛人還是有的 有大牛已找到更好的辦法 通過腳本編譯可以生成一個(gè)既可以滿足模擬器又可以滿足真機(jī)的動(dòng)態(tài)庫边琉,方法如下:

或者

通過創(chuàng)建Aggregate運(yùn)行腳本文件

選擇一個(gè)New Run Script Prase

在里面填寫腳本 直接復(fù)制內(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}"

最好在Devalopment target 都選擇iOS 8.0 從最低版本適應(yīng)

然后選擇MyAggregate 在 build only decice下編譯?

到這里大功告成记劝,在finder中查看工程 會(huì)多出一個(gè) Products文件夾

里面的framework 就是我們想要的動(dòng)態(tài)庫了 变姨,可以新創(chuàng)建一個(gè)項(xiàng)目 并將庫直接拖進(jìn)項(xiàng)目中引用頭文件并測試 ,是可以成功引用的厌丑。

注意: 在這里有一個(gè)問題 .framework 與Aggregate 的Scheme 中的Build Configuration模式要相同定欧,要么都選Debug 或者都是 Release模式

此時(shí)動(dòng)態(tài)庫制作已完成!

? ? ? 現(xiàn)在讓我們實(shí)現(xiàn)如何動(dòng)態(tài)加載動(dòng)態(tài)庫

這個(gè)就比較牛逼了 怒竿,有類似與熱更新的功能了?

首先呢 我們先創(chuàng)建一個(gè)新項(xiàng)目砍鸠,你可以通過iTunes(可以真機(jī)操作) 或者借助其他工具把framework 加入項(xiàng)目的documents文件夾中 也可以手動(dòng)添加(模擬器操作),編譯項(xiàng)目后通過查路徑 把剛才的.framework拖入項(xiàng)目的路徑文件夾中耕驰,注意路徑不要錯(cuò) 例如:

查路徑方法:

然后把文件加入Bundle中 ?方法如下:

接著我們初始化這個(gè)Class類 并調(diào)用 這個(gè)類在動(dòng)態(tài)庫中的方法

最后我們運(yùn)行項(xiàng)目 點(diǎn)擊屏幕 會(huì)發(fā)現(xiàn)跳入動(dòng)態(tài)庫中的控制器

傳Bundle 只是為了吧路徑傳給動(dòng)態(tài)庫中需要路徑的文件爷辱,根據(jù)自己的需要是否傳遞,加如庫中油 圖片 plist 加載控制器帶有Xib等文件 什么的 就需要了路徑了?

以上即為完整制作動(dòng)態(tài)庫及動(dòng)態(tài)加載庫文件的內(nèi)容朦肘,大家有更好的想法可以在下面留言托嚣。

工作中需要把兩個(gè)項(xiàng)目合并到一個(gè)項(xiàng)目可以用這個(gè)方法,不知道大家還有沒有其他更好辦法 類似于支付寶那種超級(jí)App,在項(xiàng)目中通過點(diǎn)擊事件直接進(jìn)入新的程序中(不是啟動(dòng)手機(jī)安裝的新應(yīng)用還是在原來的項(xiàng)目中實(shí)現(xiàn)) 不過它那個(gè)應(yīng)該封裝成網(wǎng)頁的原生的不知道有沒有, 希望有做過類似功能的小伙伴及時(shí)聯(lián)系我 非常感謝啦厚骗!

有問題或者好的建議請(qǐng)聯(lián)系我:

QQ:751638405

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末示启,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子领舰,更是在濱河造成了極大的恐慌夫嗓,老刑警劉巖迟螺,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異舍咖,居然都是意外死亡矩父,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門排霉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窍株,“玉大人,你說我怎么就攤上這事攻柠∏蚨” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵瑰钮,是天一觀的道長冒滩。 經(jīng)常有香客問我,道長浪谴,這世上最難降的妖魔是什么开睡? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮苟耻,結(jié)果婚禮上篇恒,老公的妹妹穿的比我還像新娘。我一直安慰自己凶杖,他們只是感情好婚度,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著官卡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪醋虏。 梳的紋絲不亂的頭發(fā)上寻咒,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音颈嚼,去河邊找鬼毛秘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛阻课,可吹牛的內(nèi)容都是我干的叫挟。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼限煞,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼抹恳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起署驻,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤奋献,失蹤者是張志新(化名)和其女友劉穎健霹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓶蚂,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡糖埋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窃这。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞳别。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖杭攻,靈堂內(nèi)的尸體忽然破棺而出祟敛,到底是詐尸還是另有隱情,我是刑警寧澤朴上,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布垒棋,位于F島的核電站,受9級(jí)特大地震影響痪宰,放射性物質(zhì)發(fā)生泄漏叼架。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一衣撬、第九天 我趴在偏房一處隱蔽的房頂上張望乖订。 院中可真熱鬧,春花似錦具练、人聲如沸乍构。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哥遮。三九已至,卻和暖如春陵究,著一層夾襖步出監(jiān)牢的瞬間眠饮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工铜邮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仪召,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓松蒜,卻偏偏與公主長得像扔茅,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子秸苗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

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