·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