Swift版 Framework制作與使用踊沸、Shell自動(dòng)合并

·1、創(chuàng)建framework社证。

1.png

·2逼龟、選擇Swift開(kāi)發(fā)語(yǔ)言。

2.png

·3追葡、創(chuàng)建文件夾管理自己的工具類(lèi)腺律,根據(jù)需求向下版本兼容。

3.png

·4宜肉、如果無(wú)法訪問(wèn)自己SDK的同學(xué)匀钧,看看是否提供正確的權(quán)限。

4.png

Common.swift

//MARK:- 常量定義
public let kStatusBarH = UIApplication.shared.statusBarFrame.size.height               //狀態(tài)欄高度
public let kNavigationBarH = UINavigationController.init().navigationBar.frame.height  //導(dǎo)航欄Bar高度
public let kNavigationH = (kStatusBarH + kNavigationBarH)                              //導(dǎo)航高度
public let kTabBarH = UITabBarController.init().tabBar.frame.height                    //tabbar高度
public let kScreenW = UIScreen.main.bounds.size.width                                  //屏幕寬
public let kScreenH = UIScreen.main.bounds.size.height                                 //屏幕高
//
public let kSystemVersion = UIDevice.current.systemVersion  //系統(tǒng)版本
public let kBatteryLevel = UIDevice.current.batteryLevel    //電池電量
public let isIPhoneX = (UIScreen.main.bounds.height == 812)

public class Common : NSObject {

    public func iOS9() -> Bool {
        if #available(iOS 9.0, *)
        {
            return true
        }
        else
        {
            return false
        }
    }

    public func iOS11() -> Bool {
        if #available(iOS 11.0, *)
        {
            return true
        }
        else
        {
            return false
        }
    }
}

·5谬返、根據(jù)自己需求之斯,是否把類(lèi)文件暴露給外界。

5.png

·6遣铝、運(yùn)行SDK佑刷,拷貝framework至測(cè)試項(xiàng)目中。

6.png

7.png

·7酿炸、Embedded Binaries 添加自己的framework瘫絮。

8.png

·8、導(dǎo)入SDK填硕,調(diào)用相關(guān)方法并運(yùn)行程序麦萤。

9.png

10.png

·注意:如果想打包模擬器和真機(jī)都兼容的Framework,又不想手動(dòng)合并的話,可以用腳本實(shí)現(xiàn)频鉴,話不多說(shuō),上圖:
1恋拍、add Target

10.png

2垛孔、選擇Aggregate,名字可任取施敢,這里取名Lib

11.png

3周荐、Build Phases -->新增Shell

12.png

4、粘貼Shell代碼

13.png

Shell 代碼:

# 1.配置 Framework 目標(biāo)輸出文件夾
UNIVERSAL_OUTPUTFOLDER=${SRCROOT}/SDK/
# 2.創(chuàng)建
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
rm -rf "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework"
# 3.構(gòu)建真機(jī)和模擬器版本
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
# 4.將框架結(jié)構(gòu)復(fù)制到 目標(biāo)輸出文件夾
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"

# 5.使用lipo創(chuàng)建通用二進(jìn)制文件僵娃,
#   并將組合的可執(zhí)行文件放在復(fù)制的框架目錄中
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"
# 6.刪除工程目錄下build文件夾
#  (該文件夾是臨時(shí)生成的概作,為了避免產(chǎn)生垃圾文件夾,因此移除)
rm -rf ${SRCROOT}/build/
# 7.打開(kāi) 目標(biāo)輸出文件夾
open "${UNIVERSAL_OUTPUTFOLDER}"

# 注: lipo -info xxx.framework 查看框架支持架構(gòu)

5默怨、運(yùn)行Lib讯榕,生成兼容版Framework

14.png
下一篇跟大家分享:Framework上傳到GitHub,然后通過(guò)CocoaPods下載我們自己的SDK匙睹,喜歡的朋友可以點(diǎn)波贊愚屁。o( ̄︶ ̄)o
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市痕檬,隨后出現(xiàn)的幾起案子霎槐,更是在濱河造成了極大的恐慌,老刑警劉巖梦谜,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丘跌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡唁桩,警方通過(guò)查閱死者的電腦和手機(jī)闭树,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)朵夏,“玉大人蔼啦,你說(shuō)我怎么就攤上這事⊙霾” “怎么了捏肢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)饥侵。 經(jīng)常有香客問(wèn)我鸵赫,道長(zhǎng),這世上最難降的妖魔是什么躏升? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任辩棒,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘一睁。我一直安慰自己钻弄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布者吁。 她就那樣靜靜地躺著窘俺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪复凳。 梳的紋絲不亂的頭發(fā)上瘤泪,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音育八,去河邊找鬼对途。 笑死,一個(gè)胖子當(dāng)著我的面吹牛髓棋,可吹牛的內(nèi)容都是我干的实檀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼按声,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼劲妙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起儒喊,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤镣奋,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后怀愧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體侨颈,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年芯义,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哈垢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扛拨,死狀恐怖耘分,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绑警,我是刑警寧澤求泰,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站计盒,受9級(jí)特大地震影響渴频,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜北启,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一卜朗、第九天 我趴在偏房一處隱蔽的房頂上張望拔第。 院中可真熱鬧,春花似錦场钉、人聲如沸蚊俺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)春叫。三九已至,卻和暖如春泣港,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背价匠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工当纱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人踩窖。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓坡氯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親洋腮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子箫柳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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

  • “人生是一襲華麗的袍,里面爬滿(mǎn)了虱子”啥供,張愛(ài)玲這樣說(shuō)悯恍。 讀到這句話,想起了一些瑣碎又及其討厭的事伙狐,有個(gè)姑娘叫石榴涮毫,...
    J1AngYUe閱讀 251評(píng)論 0 0
  • (一) 我得承認(rèn)在這個(gè)看臉的世界,第一眼見(jiàn)到路東陽(yáng)的時(shí)候贷屎,我是對(duì)他有好感的罢防。 雖然我喜歡膚白貌美的小白臉,他稍微黑...
    周草右閱讀 248評(píng)論 0 0
  • 人生幾何恬叹,為此歸途。 過(guò)年是什么呢同眯?是擁擠的人潮妄呕,是難搶的火車(chē)票,擁堵的高速公路嗽测,是千家萬(wàn)戶(hù)團(tuán)聚的日子绪励,是...
    晨暮隨心閱讀 1,007評(píng)論 0 0