1.Build Settings配置编译设置
Link With Standard Libraries -> NO
Mach-O Type -> Static Library
Dead Code Stripping -> NO
Enable Bitcode -> YES
STRIP_STYLE -> Debugging Symbols
Other C Flags 添加 -fembed-bitcode
DEPLOYMENT_POSTPROCESSING = NO (默认NO多余)
2.scheme配置成release
3.合成framework
方法1:
1、 framework可以生成真机和虚拟机2个不同的framewrok,不能互通使用,所以必须要将2个framework合并才可以。
2、在终端中输入一下命令
lipo -create 【模拟器打包path】 【真机打包path】 -output 【导出兼容版本path】
需要注意的是这个打包path指的是xxx.framework/xxx文件,而不是xxx.framework。导出的path是路径 + / + 文件名,比如我要放到桌面上,则路径应该是 /users/hzh/desktop/xxx
生成的xxx文件替换到真机path路径下xxx.framework,覆盖原来的xxx文件。
3、(敲黑板,划重点)如果你是swift,那么你还需要第四步才算完成,oc完成前面3步即可。将模拟器路径下xxx.framework/Modules/xxx.swiftmodule文件夹下的所有文件复制到真机path路径下xxx.framework/Modules/xxx.swiftmodule文件夹内。至此framework真机模拟机完成。
方法2:(推荐)
新建一个 Aggregate,并添加脚本
把下面的脚本复制到 Run Script 里面
# 如果工程名称和 Framework 的 Target 名称不一样的话,要自定义 FMKNAME
#FMK_NAME="HelloFrame"
FMK_NAME=${PROJECT_NAME}
# 导出临时目录
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# 编译临时目录
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
# 编译设备和模拟器
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos #clean build
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator VALID_ARCHS="i386 x86_64" #clean 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}/Modules/${FMK_NAME}.swiftmodule/" "${INSTALL_DIR}/Modules/${FMK_NAME}.swiftmodule/"
# 合并真机和模拟器编译结果
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
#导出到项目路径(改完Frame配置 再改PROJECT_DIR路径)
PROJECT_DIR="${HOME}/Documents/Soursetree/iOS/sample_mmjrxy_ios/MMFinancialSchool/Request" ###这里需要修改其他拷贝就好!!!###
rm -r "${PROJECT_DIR}/${FMK_NAME}.framework"
cp -R "${INSTALL_DIR}" ${PROJECT_DIR}/${FMK_NAME}.framework
open "${PROJECT_DIR}"
rm -r "${WRK_DIR}"
#open "${INSTALL_DIR}"
选中我们刚才创建的 Aggregate 这个 target,然后 Build,就可以坐等结果了。注意这里必须连手机。