新增一个Aggregate工程
方式一:选中target,点击左上角的xcode工具栏Editor点击下拉菜单中的Add Target创建一个Aggregate
方式二:选中target,点击targets下方的+,创建一个Aggregate
image.png
image.png
在Aggregate中嵌入脚本
选中刚刚创建的Aggregate,然后选中Build Phases,点击左下方加号,点击New Run Script Phase
image.png
将下方的shell代码复制到Run Script
#定义用到的环境变量
# Type a script or drag a script file from your workspace to insert its path.
#定义用到的环境变量
TARGET_NAME=Test //test替换成自己的frameworktargetname
UNION_FRAMEWORK_NAME=MYTest //最终的framework名字
UNIVERSAL_OUTPUTFOLDER=${SRCROOT}/Products/${CONFIGURATION}-universal
#编译os和模拟器平台release版本
xcodebuild -target ${TARGET_NAME} ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
xcodebuild -target ${TARGET_NAME} -arch x86_64 -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
�#创建输出文件夹,并拷贝framework作为通用framework
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
#删除旧的framework
rm -rf "${UNIVERSAL_OUTPUTFOLDER}/${UNION_FRAMEWORK_NAME}.framework"
#创建新的framework文件夹
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}/${UNION_FRAMEWORK_NAME}.framework"
#复制头文件(头文件位置参照build setting里PUBLIC_HEADERS_FOLDER_PATH项配置)
cp -r "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework/Headers" "${UNIVERSAL_OUTPUTFOLDER}/${UNION_FRAMEWORK_NAME}.framework/Headers"
#合并lib到目标framework路径
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${UNION_FRAMEWORK_NAME}.framework/${UNION_FRAMEWORK_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}"
#打开通用库所在文件夹,制作framework文件完成之后自动打开framework文件所在文件夹
open "${UNIVERSAL_OUTPUTFOLDER}"
编译脚本target生成目标framework
running:生成debug模式的framework文件,可以直接按下command+b编译debug模式下的framework文件。
Profiling:生成Release模式的framework文件。
在打开的文件夹找到最终framework检查无误即可使用。
image.png
网友评论