[Swift]SDK开发
创始人
2024-05-21 08:16:12
0

本文主要介绍使用swift语言制作framework

Demo:https://github.com/Gamin-fzym/CMSDK

一、创建工程

1.创建目录

这里我创建了一个“CMSDK”目录

2.打开Xcode新建workspace放入CMSDK目录

这里命名为“CMSDK”

3.打开CMSDK.xcworkspace新建SDK工程放入CMSDK目录

这里还是命名为“CMSDK”

将创建的SDK工程添加到CMSDK.xcworkspace

4.打开CMSDK.xcworkspace新建测试工程放入CMSDK目录

这里命名为“CMSDKTest”

这里同样要将测试工程添加到CMSDK.xcworkspace

至此工程创建完成,打开CMSDK.xcworkspace可以看到如下目录。

二、创建Target关联SDK

1.创建AggreGate文件

这里命名为“CMSDKAggregate”

2.对“CMSDKAggregate”添加dependencies

3.对“CMSDKAggregate”添加脚本

自动生成framework的脚本内容如下,可直接复制。

#!/bin/sh
#要build的target名
TARGET_NAME=${PROJECT_NAME}
if [[ $1 ]]
then
TARGET_NAME=$1
fi
UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/${PROJECT_NAME}/"#创建输出目录,并删除之前的framework文件
mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}"
rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework"#分别编译模拟器和真机的Framework
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build#拷贝framework到univer目录
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework" "${UNIVERSAL_OUTPUT_FOLDER}"lipo "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}" -remove arm64 -output "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}"#合并framework,输出最终的framework到build目录
lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework/${TARGET_NAME}"#删除编译之后生成的无关的配置文件
dir_path="${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/"
for file in ls $dir_path
do
if [[ ${file} =~ ".xcconfig" ]]
then
rm -f "${dir_path}/${file}"
fi
done
#判断build文件夹是否存在,存在则删除
if [ -d "${SRCROOT}/build" ]
then
rm -rf "${SRCROOT}/build"
fi
rm -rf "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator" "${BUILD_DIR}/${CONFIGURATION}-iphoneos"
#打开合并后的文件夹
open "${UNIVERSAL_OUTPUT_FOLDER}"

三、配置SDK

1.配置SDK支持的最低版本

2.配置SDK支持的设备

3.配置SDK为静态库

4.配置Enable Bitcode为NO

5.Other Linker Flags中添加-ObjC

6.配置Build Active Architecture Only

7.配置Perform Single-Object Prelink为YES

8.Edit Scheme中配置Build Configuration为Release

四、开发SDK

1.开发具体的功能

注意:Swift开发时,需要将要公开出去的方法、属性、变量使用public或者open修饰。

2.通过Bundle管理资源文件

还可以通过xcassets管理,也可以自己创建一个Resources目录来管理。

a.创建Bundle文件

这里命名为“CMSDK.bundle”

b.添加文件

c.使用文件

//
//  UIImage+BundledImage.swift
//  CMSDK
//
//  Created by hivpn on 30/1/2023.
//import UIKitextension UIImage {static func bundledImage(named imageName: String) -> UIImage {// 图片放在bundle的images中var bundleName = "CMSDK.framework/CMSDK.bundle/images/\(imageName)"if let image = UIImage(named: bundleName) {return image}// 图片放在bundle中bundleName = "CMSDK.framework/CMSDK.bundle/\(imageName)"if let image = UIImage(named: bundleName) {return image}// 图片放在资源目录let fileName = "CMSDK.framework/\(imageName)"if let image = UIImage(named: fileName) {return image}return UIImage()}}

3.设置SDK想要暴露给外部访问的头文件

4.使用真机(arm64)编译生成framework文件

进入Product -> Show Build Folder in Finder,在Release-iphoneos目录下可以找到CMSDK.framework。

5.依赖第三方SDK(可选)

a.cd到SDK工程目录pod导入第三方SDK

 b.进入SDK工程目录通过CMSDK.xcworkspace打开工程

 c.调用第三方SDK

 

 d.设置Pods_CMSDK.framework的Embed类型为Do Not Embed(不要嵌入)

 e.编译成framework

在这里我们会发现,开发SDK时依赖的SVProgressHUD.framework并不会被包含到我们的CMSDK.framework中。当然,其它项目在使用我们的CMSDK.framework时需要依赖SVProgressHUD.framework。

五、测试

1.CMSDKTest配置

a.配置Enable Bitcode为NO

b.Other Linker Flags中添加-ObjC

c.Edit Scheme配置Build Configuration为Release

2.CMSDKTest导入CMSDK.framework

将framework拖入项目中,在Copy Bundle Resources中添加framework。

3.测试能否正常访问SDK

六、参考

Swift framework制作: https://github.com/wangjialePro/PlayerListSDK

iOS优雅开发SDK详细教程:https://www.jianshu.com/p/398d015b1b2e

swift framework 中加载图片:https://www.jianshu.com/p/01c5edcf5856

iOS - framework开发资源图片如何配置:https://www.jianshu.com/p/5a3307b8bc2e

相关内容

热门资讯

夏天送清凉的祝福语 夏天送清凉的祝福语  1、风吹草低,你更美丽;风生水起,你更旖旎!风花雪月,你更浪漫;风送荷香,你更...
祝事业越来越好祝福语 祝事业越来越好祝福语(精选80句)  在平平淡淡的日常中,大家最不陌生的就是祝福语了吧,祝福语是指寄...
简短八个字的虎年祝福语 简短八个字的虎年祝福语  简短八个字的虎年祝福语(精选205句)  在平平淡淡的学习、工作、生活中,...
群发端午节祝福语短信 精选群发端午节祝福语短信集合64条  当您打开短信之时,我的心正在为您祈祷,祈祷您今日比昨日快乐,祈...
送给公司领导生日祝福语 送给公司领导生日祝福语  在日常学习、工作和生活中,大家对祝福语都再熟悉不过了吧,根据祝愿的对象不同...
暖心平安夜祝福语短信 暖心平安夜祝福语短信(通用180句)  在日常学习、工作抑或是生活中,大家对祝福语都再熟悉不过了吧,...
优美的光棍节祝福语短信摘录 优美的光棍节祝福语短信摘录14句  明天是光棍节,祝已婚的万事如意,恋爱的爱情甜蜜,未成年的读书顺利...
暖心光棍节祝福语短信 暖心光棍节祝福语短信汇总19句  11、11、11,是光棍专用的三双筷,事业钱财双双高飞"筷",好运...
古人文雅的生日祝福语 古人文雅的生日祝福语  在平日的学习、工作和生活里,说到祝福语,大家肯定都不陌生吧,祝福语是指对人们...
送祝福网圣诞节圣诞祝福短信,... 送祝福网圣诞节精选圣诞祝福短信,送给领导、长辈的圣诞祝福语 圣诞节虽然是西方人的节日,但随着世界各国...
宝宝祝福语八个字 宝宝祝福语八个字  在学习、工作或生活中,大家对祝福语都不陌生吧,祝福语能给亲朋好带去好运和欢乐。你...
鼠年春节祝福语 关于鼠年春节祝福语  1、送你一份100%纯情奶糖:成分=真心 思念 快乐,有效期=一生,营养=温馨...
考研祝福语和鼓励的话 考研祝福语和鼓励的话(精选180句)  求知路途漫长,祝福考研的学子考试顺利吧。接下来小编搜集了考研...
周末愉快祝福语 周末愉快祝福语集锦15篇  在我们平凡的日常里,要用到祝福语的地方还是很多的,祝福语是人们表达心中祝...
双十一光棍节祝福语短信 2020年双十一光棍节祝福语短信23条  光棍节,光棍的心情:寂寞空虚冷,羡慕嫉妒恨;光棍的愿望:遇...
疫情期间的三八妇女节祝福语 疫情期间的三八妇女节祝福语(精选100句)  在现实生活或工作学习中,大家总少不了要接触或使用祝福语...
情人节祝福语句摘录 情人节祝福语句摘录(精选195句)  在平凡的学习、工作、生活中,大家对祝福语都不陌生吧,祝福语是人...
最新的周末祝福图片 最新的周末祝福图片  周末到了,轻松一下,留一个笑脸给自己,下面是YJBYS小编为大家精心收集的周末...
结婚祝福四字成语 结婚祝福四字成语结婚祝福四字成语1结婚祝福四字成语贺订婚的四字成语结婚祝福语:成家之始 誓约同心 鸳...
元宵节的祝福诗句 元宵节的祝福诗句  在日常学习、工作和生活中,大家总少不了接触一些耳熟能详的诗句吧,诗句具有语言高度...