使用Aggregate合并真机和模拟器framework

最近把项目中开户模块抽出来,打成了静态库framework给第三方使用,framework打包网上有太多教程就不记录了,刚开始合并真机和模拟器framework使用的是命令行,操作如下,具体路径自己修改:

lipo -create /Users/debang/Library/Developer/Xcode/DerivedData/tebonOpenAccountSDK-bmwoxwyezgfywccomtljhyljptdd/Build/Products/Debug-iphoneos/tebonOpenAccountSDK.framework/tebonOpenAccountSDK /Users/debang/Library/Developer/Xcode/DerivedData/tebonOpenAccountSDK-bmwoxwyezgfywccomtljhyljptdd/Build/Products/Debug-iphonesimulator/tebonOpenAccountSDK.framework/tebonOpenAccountSDK -output /Users/debang/Desktop/framework/tebonOpenAccountSDK

比较麻烦,后来发现使用新建target Aggregate用脚本的方式合并,下面介绍下具体操作。

1.新建Aggregate target,注意Aggregate target的名称不要和framework名一样


屏幕快照 2019-11-01 下午3.34.22.png

2.然后添加脚本


屏幕快照 2019-11-01 下午3.35.54.png

3.之前在网上找的脚本很多在新版本的xcode中都不能使用了,那是因为生成脚本的时候是在项目文件目录进行操作, 之前脚本中的xcodebulid clean 指令删除了当前的编译文件导致不能使用,下面的脚本亲测可用:

if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"
lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"
open "${DEVICE_DIR}"
open "${SRCROOT}/Products"
fi

4.copy到这里


屏幕快照 2019-11-01 下午3.41.04.png

5.选择Generic iOS Device进行编译


屏幕快照 2019-11-01 下午3.42.28.png

6.编译过程需要一段时间,然后会自动弹出来framework

你可能感兴趣的:(使用Aggregate合并真机和模拟器framework)