在制作.a的过程中, 需要将真机下的.a文件和模拟器下的.a文件合并。由于需要反复调试修改,所以调试了一个脚本Run Script来实现自动合并。直接看脚本:
if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/lib${PROJECT_NAME}.a
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${SRCROOT}/Products"
cp -R "${BUILD_ROOT}/${CONFIGURATION}-iphoneos/usr/local/include/" "${SRCROOT}/Products"
lipo -create $DEVICE_DIR $SIMULATOR_DIR -output $INSTALL_DIR
open "${SRCROOT}/Products"
fi
下面手把手介绍一下使用步骤:
首先在.a项目中添加Run Script文件:
添加上述代码命令Run Script:
选择模拟器iPhone 7 Plus编译项目,忽略2处的报错,因为现在还没有编译真机下的.a文件。
选择真机编译运行,就会弹出编译后合并好的.a文件:
通过命令行可以检查下生成的.a文件,结果如下:
lipo -info /Users/zhudongdong/Documents/工作/iOS/自动合并/Products/lib自动合并.a
Architectures in the fat file: /Users/zhudongdong/Documents/工作/iOS/自动合并/Products/lib自动合并.a are: armv7 x86_64 arm64
参考Xcode环境变量列表修改个别参数,可以用于framework的生成。
关注和喜欢都是对我的支持和鼓励~