最近看到有很多开发小伙伴苦恼SDK的制造,鉴于之前做了大量的马甲包SDK业务,抽出一点时刻来总结一下制造SDK的各种姿态。
一:什么是SDK?
懒得打字, 请直接查看:zh.wikipedia.org/wiki/IOS%E8…
二:预备工作
MAC OS、XCode、Cocoapods、git、GitHub或许Gitee
三:开始制造
1.翻开XCode,顺次挑选File -> New – > Project

挑选FrameWork,然后点击Next,进入完善SDK基础信息页面:

这里我们给SDK进行一些基础信息设置:
-
Product Name设置为:NibilitySDK -
Team设置为None -
Bundle ID设置为:com.NibilitySDK.www -
Language设置为Objective-C(Swift版本的于Objective-C有一些细微的区别,以后有空再写) -
Test Info测验,我们这里为了快速演示SDK的制造,就不过多描述测验相关的了
然后将SDK项目保存到【桌面】(当然你也可以保存到下载或许文档啥的,哪里方便就保存到哪里),保存后我们就得到了一个自动翻开的工作区:

为了让SDK可以正常的工作,我们需要修正Deployment info信息。
到此,我们的SDK就设置完结啦! 接下来预备SDK的开发工作。
2.在DogManager.m中编写SDK的业务代码。
@implementation DogManager
/// 和猫打架
-(void)fightWithCat {
NSLog(@"和猫猫打架");
}
@end
3.在DogManager.h中,暴露SDK的办法fightWithCat
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface DogManager : NSObject
/// 和猫打架
-(void)fightWithCat;
@end
NS_ASSUME_NONNULL_END
5.然后我们在NibilitySDK.h文件中,引证DogManager.h头文件。

就这样,我们一个简单的SDK就制造完结了!
接下来预备编译模拟器&&真机,并兼并framework。


然后进入信息设置页面:
-
Team设置为None -
Product Name设置为:OutPutFramework -
Project默认挑选NibilitySDK
在Shell中输入以下脚本内容:
#!/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}/Framework"
rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/Framework/${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}/Framework"
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}/Framework/${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}/Framework/${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}/Framework"
然后切换Target,设备挑选Any iOS Device:

四:编译SDK
Command+B,运行项目,你将会得到一个兼并完结后的NibilitySDK.framework 然后你就可以把这个SDK导入到其他项目运用啦!
五:运用SDK
……
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。











