xcodebuild 导出framework

场景

framework开发中,需要导出framework给其他人使用。
他人可能使用模拟器,也可能使用真机。
所以需要你提供的framewor同时支持模拟器和真机。

思路

启动shell脚本:

  1. build release版本 模拟器适用的framework
  2. build release版本 真机适用的framework
  3. 合并1,2中生成的framework
  4. 导出到指定目录

使用xcodebuild+shell

前提:
保证framework在模拟器上build和generic iOS device上build没有错误,
且生成的framewor可以在相应的环境中适用。

1.新建target,负责启动shell脚本
xcodebuild 导出framework_第1张图片
image.png
xcodebuild 导出framework_第2张图片
image.png
2.shell脚本编写

一般framework打包时,会用到一下命令

FRAMEWORK_NAME='framework的名字'
WORK_DIR='build'
#release环境下,generic ios device编译出的framework。这个framework只能供真机运行。
DEVICE_DIR=${WORK_DIR}/'Release-iphoneos'/${FRAMEWORK_NAME}'.framework'
#release环境下,simulator编译出的framework。这个framework只能供模拟器运行。
SIMULATOR_DIR=${WORK_DIR}/'Release-iphonesimulator'/${FRAMEWORK_NAME}'.framework'
#framework的输出目录
OUTPUT_DIR=${SRCROOT}/'Products'/${FRAMEWORK_NAME}'.framework'

##xcodebuild打包
xcodebuild -target ${FRAMEWORK_NAME}
ONLY_ACTIVE_ARCH=NO
-configuration 'Release'
-sdk iphoneos clean build

xcodebuild -target ${FRAMEWORK_NAME} 
ONLY_ACTIVE_ARCH=NO 
-configuration 'Release' 
-sdk iphonesimulator clean build

#如果输出目录存在,即移除该目录,再创建该目录。目的是为了清空输出目录。
if [ -d ${OUTPUT_DIR} ]; then
rm -rf ${OUTPUT_DIR}
fi
mkdir -p ${OUTPUT_DIR}

#复制release-simulator下的framework到输出目录
cp -r ${DEVICE_DIR}/ ${OUTPUT_DIR}/

#lipo命令合并两种framework,将SVProgressHUD.framework/SVProgressHUD,覆盖输出到输出目录。
lipo -create ${DEVICE_DIR}/${FRAMEWORK_NAME} ${SIMULATOR_DIR}/${FRAMEWORK_NAME} -output ${OUTPUT_DIR}/${FRAMEWORK_NAME}

rm -r ${WORK_DIR}
#打开输出目录
open ${OUTPUT_DIR}

你可能感兴趣的:(xcodebuild 导出framework)