头一次搞这SDK开发,有点头大,只能一步一步摸着石头过河了~
剑来镇压图

一、创建一个workspace + SDK project
1.先在桌面创建一个文件夹--->YjcSDK

2.创建一个workspace项目 到 文件夹--->YjcSDK

3,创建project 选择 Cocoa Touch FranmeWork


注意: Add to 需要 换成刚刚创建的 workSpace

SDK创建OK

4,SDK 添加代码 我这里添加一个View

5.修改一些配置
- 设置Build Setting参数将Build Active Architecture only设置为NO

-
Mach-o type 修改为Static Librayr
image.png
-
设置Headers,将要公开的头文件拖到Public下,要隐藏的放到Private或Project下,隐藏的头文件不能被引用
我是想让SDK YjcView.h文件 可以被访问,所以需要将其添加到 public
拖拽.h文件到 public

6.在YjcSDK.h 中将所有要公开的.h引入

7.脚本导出 framwork 创建一个Aggregare
必需得先点击targets




接下来将一段代码 复制
#**************************************************************************************************************
# 增加这个Target,并使用脚本编译,主要是为了制作支持模拟器的framework, 该Target编译生成的是生产版本,编译输出的framework保存在
# 工程文档所在目录的Products子目录中,输出包括两个,一个是支持模拟器的版本,另一个是用于上传到App Store的版本,之所以要单独制作一
# 个用于上传App Store的版本,是因为支持模拟器的版本包括x86_64及i386框架,上传App Store时不被苹果允许
#**************************************************************************************************************
# 如果工程名称和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_AppStore=${SRCROOT}/Products/AppStore发布版本/${FMK_NAME}.framework
INSTALL_DIR_Simulator=${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
#将编译生成的framework拷贝到Products目录
#先拷贝正常的,用于发布到App Store的版本
# Cleaning the oldest.
if [ -d "${INSTALL_DIR_AppStore}" ]
then
rm -rf "${INSTALL_DIR_AppStore}"
fi
cp -R "${DEVICE_DIR}" "${INSTALL_DIR_AppStore}"
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
#然后制作支持模拟器的能用版本
if [ -d "${INSTALL_DIR_Simulator}" ]
then
rm -rf "${INSTALL_DIR_Simulator}"
fi
cp -R "${SIMULATOR_DIR}" "${INSTALL_DIR_Simulator}"
lipo -create "${INSTALL_DIR_AppStore}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR_Simulator}/${FMK_NAME}"
#删除临时编译目录
rm -r "${WRK_DIR}"
#打开输入文件夹
open "${SRCROOT}/Products"
#结束

8.选择 MySDK command + B 编译,导出framwork

会报错的,因为有两个路径不对 不存在

这是因为在添加 脚本代码的时候 没有如图存在的两个路径

所以需要添加几个文件夹,(名字一段要和脚本代码里面的对应好)

重新 command + B 编译:(编译一定要选对)

成功之后 会自动弹出

注意:此处为什么是 分为不同版本:
# 增加这个Target,并使用脚本编译,主要是为了制作支持模拟器的framework, 该Target编译生成的是生产版本,编译输出的framework保存在
# 工程文档所在目录的Products子目录中,输出包括两个,一个是支持模拟器的版本,另一个是用于上传到App Store的版本,之所以要单独制作一
# 个用于上传App Store的版本,是因为支持模拟器的版本包括x86_64及i386框架,上传App Store时不被苹果允许
至此 简易的SDK 是做成功了
二,如何使用SDK
1.创建一个demo,

2.将之前 打包出来的 framework 拖到项目中:(我用模拟器)

3.导入SDK 头文件 在ViewController中添加SDK中的YjcView

4.最终展示

3.调试
我如果想更换颜色,是不是还得 改变颜色 然后再打包 拖入?(tei麻烦了)
1.将之前的framework 删掉



2.我将颜色 直接改为 黄色 (先不要急着运行,先clear 一遍),结果颜色 还是没变

(尴尬的一匹~)

这里是没有静态库的 所以!


OK

至此 调试就OK了
但是: 上架的时候,肯定要的是framework ,所以需要删除 如图以下的project,我点击右键 delete 然后 Move to trash 导致SDK 中 project给没了!!!没了!!没了!
一身冷汗~ 注意了 我是这样做的,remove reference 删除引用 而不是放到废纸篓........


4,打包上架App
记得SDK 需要切换到

网友评论