iOS之SDK-Framework的制作
2020-01-16 本文已影响0人
中秋梧桐语
前言,本人最近接手了一个SDK的维护工作,前两天又接到一个需求,需要新开发个拍照小工具SDK。为了以后开发SDK提供方便,现将制作过程写下来,记于简书。
一、 首先创建Cocoa Touch Framework工程
屏幕快照 2020-01-15 上午11.44.06.png创建成功后添加自定义的Person类,如下所示。
屏幕快照 2020-01-15 上午11.49.58.pngPerson.m文件的实现
- (void)run{
NSLog(@"---执行了run方法");
}
二、工程配置。
1. 在工程配置界面,配置相应信息。
选择Targets,在build Settings的搜索框中输入 linking。改变如下三处地方的配置。
屏幕快照 2020-01-15 上午11.54.46.png
2. 暴露头文件,直接将想要公开的头文件,从project里面拖拽到public中即可。
屏幕快照 2020-01-15 下午2.30.11.png3. 如果想要公开的头文件比较多,可以将要公开的头文件导入到主头文件中。
4. 修改scheme的编译运行类型为release,这样编译的framework就是release包。
屏幕快照 2020-01-16 下午5.38.11.png 屏幕快照 2020-01-15 下午2.32.04.png导入公共头文件中的头必须放在public里,不然在使用Framework的时候,会报文件找不到的错误。
屏幕快照 2020-01-16 下午4.51.06.png
三、创建和Framework关联的测试Demo,联调开发。
1. 在工程中添加一个类型为Single View App的TARGETS,我的命名为TestFrameworkDemo。
屏幕快照 2020-01-15 上午11.59.54.png其操作步骤是,点击targets中的"+"号按钮,创建选择Single View App类型的工程,跟创建新工程是一样的。
2. 将Framework和联调的Demo关联起来。
切换scheme到Framework,进行编译,然后在Products下的Framework字体变红后,定位到自己的Framework,最后再勾选关联到demo工程。
屏幕快照 2020-01-15 下午2.47.03.png
3. 将Framework的头文件导入到项目中,使用相关功能。
屏幕快照 2020-01-16 下午4.53.58.png四、创建脚本自动打包工具Aggregate。
打包的方式有很多种,你可以手动编译打包,然后合并各架构包,这里就不做过多赘述。
下面将的是,利用苹果Aggregate工具,创建自动打包工具,其原理也是通过脚本自动编译工程,再合并,其实跟手动做的工作是一样的。
1. 首先添加新的targets,其类型为Aggregate。我这里命名为TestFrameworkAggregate。
屏幕快照 2020-01-16 下午5.02.23.png-
给TestFrameworkAggregate添加脚本。
屏幕快照 2020-01-16 下午5.24.02.png
屏幕快照 2020-01-16 下午5.30.38.png
我这里是在网上找的一段自动打包脚本,可将打包文件自动放到工程目录下的Products文件夹中。
if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"
lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"
#open "${DEVICE_DIR}"
open "${SRCROOT}/Products"
fi
运行成功后,会自动弹出文件夹目录。
屏幕快照 2020-01-16 下午5.27.24.png
最后,在运行脚本文件之前,需开发者自动编译Framework,真机和模拟器都编译(build)一下。只要能看到Products文件夹下的框架字体由红变黑就ok了。