真机&模拟器 Framework 脚本自动合并
# 设置 framework 名称
FMK_NAME="XXXXXX"
# 合并后的 framework 将在此文件夹中生成
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# framework 生成后,移除 build 文件夹
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
# 分别编译模拟器和真机的 framework
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos build
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator build
# 清理旧文件 创建新文件
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
cp -R "${SIMULATOR_DIR}/" "${INSTALL_DIR}/"
# 合并真机和模拟器的 framework
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
# 移除 biuld 文件夹
rm -r "${WRK_DIR}"
# 自动打开 products 文件夹
open "${INSTALL_DIR}"
说明:此脚本需要使用 aggregate 运行,具体操作流程 :
- 添加 target -> 选择 Cross-platform 选项卡 -> 选择 aggregate;
- 设置 Product Name;
- 添加 Run Script Phase(拷贝上面的命令);
- Xcode 选中此 target,Run 设置为 Release,编译通过后,会自动打开 product 文件夹,里面有合并后的静态库。
- 很多文章的介绍在
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos build
命令中, build 之前做了 clean 操作,测试后这样并不能正常合并,product 文件夹只有支持模拟器的静态库,去掉 clean 命令后可以正常合并。
以上为个人开发总结,至此 iOS Framework 静态库开发应该算比较完整了,如有错误,欢迎批评指正!
网友评论