【潮汐】iOS framework-SDK开发用Cocoapod
2022年2月23日亲自测有用
iOS framework-SDK开发用Cocoapods管理第三方库
一.创建工程
1.选择Cocoa Touch Framework
![](https://img.haomeiwen.com/i13131064/37facaae071f598f.png)
2.更改Xcode配置
![](https://img.haomeiwen.com/i13131064/ade59f7d614a47a4.png)
注:Dead Code Stripping:舍弃无用代码
Link With Standard Library:用标准库连接
Mach-O Type:类型选择静态库
3.将Build Active Architecture Only 设置为NO(代表根据Arch 和Valid Arch来设定, 一般Debug模式下为yes,Release模式下为No):
注:Build Active Archiitecture Only指是否只对当前连接设备所支持的指令集编译,在debug模式下为了编译更快选择yes,而release模式下设为No,支持所选的所有架构
4.创建Podfile文件
![](https://img.haomeiwen.com/i13131064/84136f48e410327a.png)
引入第三方库,然后执行pod install
![](https://img.haomeiwen.com/i13131064/6452f9b962f83f80.png)
5.打开pod生成的.xcworkspace文件,创建类
![](https://img.haomeiwen.com/i13131064/0a3e4ae8f595a2e3.png)
4.设置Headers
将需要公开的头文件拖置Public
![](https://img.haomeiwen.com/i13131064/bacf0a9b810e9b6d.png)
二.创建demo联调
1.通过workspace文件打开步骤一的SDK项目
2.新建一个target,类型选择Single View App
![](https://img.haomeiwen.com/i1521667/99e4d2202943310c.png)
3.编辑Podfile,如下所示,联调需要分别设置SDK与Demo的的target,导出包给别人用好像不需要设置SDK的target,只用设置项目的target:
![](https://img.haomeiwen.com/i13131064/b152b605b276346e.png)
4.执行pod install
5.Other Linker Flages 处添加:-ObjC 。 Enable Bitcode 设置为NO,不然三方framework无法使用。
6.选中demo的target,在Target Dependencies中将SDK和bundle的target加进来,并且在Link Binary With Libraries中添加SDK的framework, 在Copy Bundle Resource中添加bundle。这样的话,SDK有改动,demo引用的是最新版本。
注意:直接把自己的BRCBTwoAccountPaySDK.framework往demo里拖,别勾选copy也可以。
将图中替换内容后的标红框的framework拉出来保存,此为制作完成的Framework
四.脚本编译出SDK供其它项目使用
1.在SDK项目中创建一个新target,类型选择Aggregate
![](https://img.haomeiwen.com/i13131064/420f58ee2b997e93.png)
2.选中新创建的target,在Build Phrases下添加一个Run Script,内容参考如下:
#通过脚本合并真机和模拟器SDK包
TARGET_NAME=${PROJECT_NAME}
OUTPUT_DIR=${SRCROOT}/Products/${TARGET_NAME}.framework
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework
if [ -d "${OUTPUT_DIR}" ]
then
rm -rf "${OUTPUT_DIR}"
fi
mkdir -p "${OUTPUT_DIR}"
cp -R "${DEVICE_DIR}/" "${OUTPUT_DIR}/"
lipo -create "${DEVICE_DIR}/${TARGET_NAME}" "${SIMULATOR_DIR}/${TARGET_NAME}" -output "${OUTPUT_DIR}/${TARGET_NAME}"
open "${SRCROOT}/Products"
3.编译Aggregate 类型的target,会自动打开SDK所需framework所在的文件夹。
注:步骤二和步骤一示例名称有所不同,不用纠结,只为示例!
制作完成!!!