·1、创建framework。
·2、选择Swift开发语言。
·3、创建文件夹管理自己的工具类,根据需求向下版本兼容。
·4、如果无法访问自己SDK的同学,看看是否提供正确的权限。
Common.swift
//MARK:- 常量定义
public let kStatusBarH = UIApplication.shared.statusBarFrame.size.height //状态栏高度
public let kNavigationBarH = UINavigationController.init().navigationBar.frame.height //导航栏Bar高度
public let kNavigationH = (kStatusBarH + kNavigationBarH) //导航高度
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 //系统版本
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、根据自己需求,是否把类文件暴露给外界。
·6、运行SDK,拷贝framework至测试项目中。
·7、Embedded Binaries 添加自己的framework。
·8、导入SDK,调用相关方法并运行程序。
·注意:如果想打包模拟器和真机都兼容的Framework,又不想手动合并的话,可以用脚本实现,话不多说,上图:
1、add Target
2、选择Aggregate,名字可任取,这里取名Lib
3、Build Phases -->新增Shell
4、粘贴Shell代码
Shell 代码:
# 1.配置 Framework 目标输出文件夹
UNIVERSAL_OUTPUTFOLDER=${SRCROOT}/SDK/
# 2.创建
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
rm -rf "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework"
# 3.构建真机和模拟器版本
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.将框架结构复制到 目标输出文件夹
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"
# 5.使用lipo创建通用二进制文件,
# 并将组合的可执行文件放在复制的框架目录中
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文件夹
# (该文件夹是临时生成的,为了避免产生垃圾文件夹,因此移除)
rm -rf ${SRCROOT}/build/
# 7.打开 目标输出文件夹
open "${UNIVERSAL_OUTPUTFOLDER}"
# 注: lipo -info xxx.framework 查看框架支持架构
5、运行Lib,生成兼容版Framework