iOS開(kāi)發(fā)自己的Framework之·真機(jī)模擬器合并

一、前提條件:你已經(jīng)創(chuàng)建好自己的xx.framework,如果還沒(méi)有自己的xx.framework,請(qǐng)參考:如何創(chuàng)建自己的framework
二旷痕、步驟簡(jiǎn)要,這里提供了兩種實(shí)現(xiàn)方式
方式一:使用shell顽冶,簡(jiǎn)單方便
方式二:使用手動(dòng)合成欺抗,雖然慢,但是更加體現(xiàn)原理和過(guò)程强重,也能很好的解釋shell中的命令

方式一:
1绞呈、生成腳本 并 設(shè)置腳本路徑
方式二:
1团滥、獲取真機(jī)編譯的framework 和 模擬器編譯的framework;
2报强、合并framework通過(guò)終端命令:lipo -create 真機(jī)路徑 模擬器路徑 -output 真機(jī)路徑灸姊;
3、檢驗(yàn)合并結(jié)果通過(guò)終端命令:lipo -info xx.framework/xx

三秉溉、方式一的詳細(xì)步驟
1力惯、創(chuàng)建添加
創(chuàng)建添加

創(chuàng)建添加

創(chuàng)建添加script

2、復(fù)制shell代碼召嘶,直接復(fù)制我下面的shell代碼父晶,到你的工程中就行了,不用做任何更改


image.png
#!/bin/sh
#要build的target名
TARGET_NAME=${PROJECT_NAME}
if [[ $1 ]]
then
TARGET_NAME=$1
fi
UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/${PROJECT_NAME}_Products/"

#創(chuàng)建輸出目錄弄跌,并刪除之前的framework文件
mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}"
rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework"

#分別編譯模擬器和真機(jī)的Framework
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build

#拷貝framework到univer目錄
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework" "${UNIVERSAL_OUTPUT_FOLDER}"

#合并framework甲喝,輸出最終的framework到build目錄
lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework/${TARGET_NAME}"

#刪除編譯之后生成的無(wú)關(guān)的配置文件
dir_path="${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/"
for file in ls $dir_path
do
if [[ ${file} =~ ".xcconfig" ]]
then
rm -f "${dir_path}/${file}"
fi
done
#判斷build文件夾是否存在,存在則刪除
if [ -d "${SRCROOT}/build" ]
then
rm -rf "${SRCROOT}/build"
fi
rm -rf "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator" "${BUILD_DIR}/${CONFIGURATION}-iphoneos"
#打開(kāi)合并后的文件夾
open "${UNIVERSAL_OUTPUT_FOLDER}"
3铛只、編譯工程埠胖,獲取最終的framework,并驗(yàn)證是否包含真機(jī)和模擬器的架構(gòu)關(guān)于架構(gòu):armv7,armv7s,arm64,i386,x86_64
編譯command + B淳玩,之后會(huì)自動(dòng)打開(kāi)xx.framework

驗(yàn)證是否包含真機(jī)和模擬器的架構(gòu)
四直撤、方式二的詳細(xì)步驟
1、桌面創(chuàng)建好文件夾蜕着,準(zhǔn)備存放真機(jī).framework 和 模擬器.framework
準(zhǔn)備好存放真機(jī)和模擬器framework的文件夾
2谋竖、Xcode工程-Edit scheme...-Run-選中Release
選中release
3、先shift + command + K 清除一下承匣,然后command + B 編譯獲取真機(jī).framework蓖乘,并放入到真機(jī)文件夾中備用
編輯真機(jī).framework

真機(jī).framework

copy真機(jī).framework放入文件夾
4、先shift + command + K 清除一下韧骗,然后command + B 編譯獲取模擬器.framework嘉抒,并放入到模擬器文件夾中備用
編輯模擬器.framework

模擬器.framework

copy模擬器.framework放入文件夾
5、驗(yàn)證編譯獲取到的真機(jī).framework和模擬器.framework的架構(gòu)是否對(duì)應(yīng)正確

注意:終端命令 lipo -info xx.framework/xx

關(guān)于架構(gòu):armv7,armv7s,arm64,i386,x86_64

模擬器架構(gòu)i386,x86_64

真機(jī)架構(gòu)armv7,armv7s,arm64

5宽闲、合并真機(jī)和模擬器的framework众眨,這里我是將最終合并的framework握牧,合并到真機(jī).framework中容诬,合并的終端命令:lipo -create 真機(jī)路徑 模擬器路徑 -output 真機(jī)路徑

注意:這邊的真機(jī)路徑 和 模擬器路徑,是xx.framework/xx的路徑

合并framework
6沿腰、驗(yàn)證合并真機(jī)和模擬器的結(jié)果framework的架構(gòu)是否包含了真機(jī)和模擬器的架構(gòu)
驗(yàn)證合并的framework架構(gòu)是否正確
7览徒、使用framework

這里就不多說(shuō)了,大家應(yīng)該都懂颂龙,完結(jié)习蓬。

五纽什、參考鏈接:

shell方式
shell方式
方式二

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市躲叼,隨后出現(xiàn)的幾起案子芦缰,更是在濱河造成了極大的恐慌,老刑警劉巖枫慷,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件让蕾,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡或听,警方通過(guò)查閱死者的電腦和手機(jī)探孝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)誉裆,“玉大人顿颅,你說(shuō)我怎么就攤上這事∽愣” “怎么了粱腻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)斩跌。 經(jīng)常有香客問(wèn)我栖疑,道長(zhǎng),這世上最難降的妖魔是什么滔驶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任遇革,我火速辦了婚禮,結(jié)果婚禮上揭糕,老公的妹妹穿的比我還像新娘萝快。我一直安慰自己,他們只是感情好著角,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布揪漩。 她就那樣靜靜地躺著,像睡著了一般吏口。 火紅的嫁衣襯著肌膚如雪奄容。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天产徊,我揣著相機(jī)與錄音昂勒,去河邊找鬼。 笑死舟铜,一個(gè)胖子當(dāng)著我的面吹牛戈盈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼塘娶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼归斤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起刁岸,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤脏里,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后虹曙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蹬跃,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸳君,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缓屠。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡板乙,死狀恐怖谓松,靈堂內(nèi)的尸體忽然破棺而出焕妙,到底是詐尸還是另有隱情,我是刑警寧澤沃斤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布圣蝎,位于F島的核電站,受9級(jí)特大地震影響衡瓶,放射性物質(zhì)發(fā)生泄漏徘公。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一哮针、第九天 我趴在偏房一處隱蔽的房頂上張望关面。 院中可真熱鬧,春花似錦十厢、人聲如沸等太。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缩抡。三九已至,卻和暖如春包颁,著一層夾襖步出監(jiān)牢的瞬間瞻想,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工娩嚼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蘑险,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓待锈,卻偏偏與公主長(zhǎng)得像漠其,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子竿音,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355