目录
一、创建一个workspace
1、在桌面上创建一个文件夹MyTest(名字自己随便取)
放在桌面上是为了创建framework以及demo实例,存放的文件夹方便找,也可以创建在别的地方,但是在创建framework以及demo实例的时候一定要查看存放的位置是否正确
2、打开Xcode,创建一个workspace,将workspace放在文件夹MyTest里面。
Xcode --> File --> New --> Workspace
二、创建SDK
1、打开创建的workspace文件,创建project,选择framework;创建framework,把framework添加到workspace里面。
打开workspace文件 --> File --> New --> Project --> Framework
三、创建Demo
1、依旧还是在workspace文件中创建project,选APP;创建APP,把APP添加到workspace里面
最终的效果图:
四、Demo的关联以及SDK的开发调试
1、首先我们需要创建一个MYView类,继承于UIView,简单的重写了一下初始化方法,设置了背景颜色。
2、修改配置
1、搜索:Mach_O Type,选择Static Library
2、还有一处是这样的,如果你的framework里面需要添加一些分类,那么需要在Other Linker Flags 添加 -all_load(注意符号不要用中文写了,all_load它的作用是加载静态库中所有文件,all_load作用于所有的库)
3、调一下iOS版本号,调到最低版本
4、设置Headers,将添加在SDK中的类的头文件,公开拖到Public下,要隐藏的放到Private或者Project下,隐藏的头文件不能被引用
5、在MyTestSDK.h中添加所有公开的头文件
五、打包
上面的四大步走完之后,就是我们最重要的打包过程了,如果你使用这种自动打包,你可以通过终端进行手动打包
1、创建一个Aggregate
点击MyTestSDK --> Editor --> Add Target --> Other --> Aggregate
2、嵌入脚本,选中刚刚创建的Aggregare,然后选中右侧的Build Phases,点击左边的+号,选择New Run Script Phases
3、将下面的脚本赋值进去
注: 主要注意的是路径以及名称的问题
######### 打包脚本
#########
BUILD_TIME=`date "+%Y-%m-%d-%H%M%S"`
echo "-----------$BUILD_TIME"
#clean and build 是否重新clean编译
CLEAN_BUILD=1
#MY_BUILD_MODE=Debug
MY_BUILD_MODE=Release
#SDK名称
SDK_NAME=DYTestSDK
#SDK名称
SDK_NAMEMul=DYTestSDKMulator
#bundle名称
#BUNDLE_NAME=${SDK_NAME}
# scheme
SCHEME_NAME=DYTestSDK
#ios sdk工程路径
PATH_SDK=${SRCROOT}
#根目录
PATH_ROOT=`dirname ${SRCROOT}`
#workspace工程名称
WORKSPACE=${PROJECT_NAME}.xcworkspace
echo "sdk工程路径:$PATH_SDK"
echo "sdk 跟目录路径:$PATH_ROOT"
echo "WORKSPACE:$WORKSPACE"
# 获取版本号
VERSION=`echo ${VERSION/=/}`
#输出路径
FRAMEWORK_OUTPUT=${PATH_ROOT}/DYTestSDK-iOS/SDK
#删除已经存在的文件
if [ -d "${FRAMEWORK_OUTPUT}" ]
then
rm -rf "${FRAMEWORK_OUTPUT}"
echo "删除已存在路径:$FRAMEWORK_OUTPUT"
fi
mkdir -p $FRAMEWORK_OUTPUT
echo "输出路径:$FRAMEWORK_OUTPUT"
echo "########### Build ##########"
#进入PlayerSDK目录
cd $PATH_SDK
if [ CLEAN_BUILD ]; then
#执行clean命令
xcodebuild clean
fi
#执行build真机命令
cd $PATH_ROOT
xcodebuild -workspace $WORKSPACE -scheme $SCHEME_NAME -sdk iphoneos -configuration ${MY_BUILD_MODE} -UseModernBuildSystem=NO
xcodebuild -workspace $WORKSPACE -scheme $SCHEME_NAME -sdk iphonesimulator -configuration ${MY_BUILD_MODE} -UseModernBuildSystem=NO
#build模拟器SDK
#xcodebuild -workspace $WORKSPACE -scheme $SDK_NAME -sdk iphonesimulator -configuration ${MY_BUILD_MODE} -UseModernBuildSystem=NO
echo "########### OUTPUT ##########"
#cp 真机framework到output
echo "###########:cp -r ${BUILD_DIR}/${MY_BUILD_MODE}-iphoneos/$SDK_NAME.framework $FRAMEWORK_OUTPUT/$SDK_NAME.framework"
cp -r ${BUILD_DIR}/${MY_BUILD_MODE}-iphoneos/$SDK_NAME.framework $FRAMEWORK_OUTPUT
#echo "###########:cp -r ${BUILD_DIR}/${MY_BUILD_MODE}-iphonesimulator/$SDK_NAME.framework $FRAMEWORK_OUTPUT/$SDK_NAME.framework"
#cp -r ${BUILD_DIR}/${MY_BUILD_MODE}-iphonesimulator/$SDK_NAME.framework $FRAMEWORK_OUTPUT
# ----------- zip 打包
echo "########### zip 打包 ##########"
# 进入根目录
cd ${PATH_ROOT}
VERSION_PATH=${PATH_ROOT}/DYTestSDK-iOS-$VERSION
if [ -d "${VERSION_PATH}" ]
then
rm -rf "${VERSION_PATH}"
echo "删除已存在路径:$VERSION_PATH"
fi
if [ -d "${VERSION_PATH}.zip" ]
then
rm -rf "${VERSION_PATH}.zip"
echo "删除已存在zip路径:$VERSION_PATH.zip"
fi
cp -r ${PATH_ROOT}/DYTestSDK-iOS $VERSION_PATH
zip DYTestSDK-iOS-$VERSION.zip -r -m DYTestSDK-iOS-$VERSION
echo "########### zip 打包 完成 ##########"
open /$FRAMEWORK_OUTPUT
echo "########### FINISHED ##########"
4、最后编译
成功案例:
5、demo接入framework
下列代码为调用方法:
#import "ViewController.h"
#import <DYTestSDK/MyTestView.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
MyTestView *view = [[MyTestView alloc] init];
[view success];
}
成功截图