Swift版 Framework制作与使用、Shell自动合并
2018-03-27 本文已影响22人
Guomingjian
·1、创建framework。
1.png
·2、选择Swift开发语言。
2.png
·3、创建文件夹管理自己的工具类,根据需求向下版本兼容。
3.png
·4、如果无法访问自己SDK的同学,看看是否提供正确的权限。
4.png
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、根据自己需求,是否把类文件暴露给外界。
5.png
·6、运行SDK,拷贝framework至测试项目中。
6.png
7.png
·7、Embedded Binaries 添加自己的framework。
8.png
·8、导入SDK,调用相关方法并运行程序。
9.png
10.png
·注意:如果想打包模拟器和真机都兼容的Framework,又不想手动合并的话,可以用脚本实现,话不多说,上图:
1、add Target
10.png
2、选择Aggregate,名字可任取,这里取名Lib
11.png
3、Build Phases -->新增Shell
12.png
4、粘贴Shell代码
13.png
Shell 代码:
# 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}/"
cp -R "${SIMULATOR_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}"
5、运行Lib,生成兼容版Framework
14.png