FrameworkiOS-SDKiOS知识点

iOS制作pod第三方库的framework

2019-07-24  本文已影响0人  Cherry_06

一.创建工程

1.选择Cocoa Touch Framework

2.更改xcode配置

注: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文件

引入第三方库,然后执行pod install

5.打开.xcworkspace文件,创建类

4.设置Headers

将需要公开的头文件拖置Public

二.创建demo联调

1.通过workspace文件打开步骤一的SDK项目

2.新建一个target,类型选择Single View App

3.编辑Podfile,如下所示:

4.执行pod install

5.选中demo的target,在Target Dependencies中将SDK和bundle的target加进来,并且在Link Binary With Libraries中添加SDK的framework, 在Copy Bundle Resource中添加bundle。这样的话,SDK有改动,demo引用的是最新版本。

将图中替换内容后的标红框的framework拉出来保存,此为制作完成的Framework

四.脚本编译出SDK供其它项目使用

1.在SDK项目中创建一个新target,类型选择Aggregate

2.选中新创建的target,在Build Phrases下添加一个Run Script,内容参考如下:

######### 打包脚本

#########BUILD_TIME=`date "+%y%m%d%H%M"`

#是否拷贝lib库 !!!!!!!!!!!!!COPY_LIBS=1

#clean and build 是否重新clean编译CLEAN_BUILD=0

#SDK名称SDK_NAME=${PROJECT_NAME}

#bundle名称BUNDLE_NAME=XGOverseaResource

#ios sdk工程路径PATH_SDK=${SRCROOT}

PATH_DEMO=$(dirname ${SRCROOT})/XGOverseaSDK/XGOverseaDemo

#workspace工程名称WORKSPACE=${PROJECT_NAME}.xcworkspace

echo "sdk工程路径:$PATH_SDK"

echo "sdk demo工程路径:$PATH_DEMO"

#输出路径OUTPUT=/Users/${USER}/Desktop/${SDK_NAME}_${BUILD_TIME}mkdir $OUTPUT

echo "输出路径:$OUTPUT"

echo "########### Build ##########"

if [ CLEAN_BUILD ];

then

#进入PlayerSDK目录cd $PATH_SDK

#执行clean命令xcodebuild clean

#执行build真机命令xcodebuild -workspace $WORKSPACE -scheme $SDK_NAME -sdk iphoneos -configuration Release

#build模拟器SDKxcodebuild -workspace $WORKSPACE -scheme $SDK_NAME -sdk iphonesimulator -configuration Release

fi

echo "########### Strip ##########"

#执行strip真机SDKstrip -x    ${BUILD_DIR}/Release-iphoneos/$SDK_NAME.framework/$SDK_NAME

#cp 真机framework到outputcp -r ${BUILD_DIR}/Release-iphoneos/$SDK_NAME.framework $OUTPUT/$SDK_NAME.framework

#执行strip模拟器命令strip -x   ${BUILD_DIR}/Release-iphonesimulator/$SDK_NAME.framework/$SDK_NAME

#删除framework原有的库文件rm -r $OUTPUT/$SDK_NAME.framework/$SDK_NAME

#合并SDK 输出到outputlipo -create ${BUILD_DIR}/Release-iphonesimulator/$SDK_NAME.framework/$SDK_NAME ${BUILD_DIR}/Release-iphoneos/$SDK_NAME.framework/$SDK_NAME -output $OUTPUT/$SDK_NAME.framework/$SDK_NAME

echo "########### Other framework ##########"

#SDK关联库SDKS_NAME=(AFNetworking FBSDKCoreKit FBSDKLoginKit FBSDKShareKit QMUIKit)

for var in ${SDKS_NAME[@]};

do

echo $var

#执行strip真机SDKstrip -x    ${BUILD_DIR}/Release-iphoneos/$var/${var}.framework/$var

#cp 真机framework到outputcp -r ${BUILD_DIR}/Release-iphoneos/$var/${var}.framework $OUTPUT/$var.framework#执行strip模拟器命令strip -x   ${BUILD_DIR}/Release-iphonesimulator/$var/${var}.framework/$var

#删除framework原有的库文件rm -r $OUTPUT/${var}.framework/$var

#合并SDK 输出到outputlipo -create ${BUILD_DIR}/Release-iphonesimulator/$var/${var}.framework/$var ${BUILD_DIR}/Release-iphoneos/$var/${var}.framework/$var -output $OUTPUT/${var}.framework/$var

done 

echo "########### OUTPUT ##########"

#拷贝 Demo到release目录cp -R $PATH_DEMO $OUTPUT/echo "copy $PATH_DEMO to $OUTPUT/"

echo "########### Copy Bundle ##########"

#复制Bundle到outputcp -r ${BUILD_DIR}/Release-iphoneos/${BUNDLE_NAME}.bundle $OUTPUT/$BUNDLE_NAME.bundle

open /$OUTPUT

echo "########### FINISHED ##########"

3.编译target,会自动打开SDK所需framework所在的文件夹。

注:步骤二和步骤一示例名称有所不同,不用纠结,只为示例!

制作完成!!!

上一篇下一篇

猜你喜欢

热点阅读