注意:在M1芯片的电脑上只会支持支持arm64、arm7,下面教程不合适,这时候我推荐使用xcframework,教程如下:
一、创建framework工程:
1.在桌面创建一个文件夹,取名MyFramework,这个文件夹我是用来统一存放framework、demo、workspace工程。
2.创建framework工程,存放位置在MyFramework文件中。取名:MySDK

设置支持的最小版本为10.0版本。注意:framework支持的最低版本号,要“小于”或者“等于”主项目工程支持的最低版本号。
二、创建demo测试工程:
1.创建demo测试工程,取名Demo,存放位置在MyFramework文件夹下。与framework工程是同级关系。

二、创建workspae管理framework、demo:
1.创建workspae管理工程,取名“MyFrameworkWorkSpace”。位置存放在MyFramework文件夹下,与其他工程同级关系。
2.打开MyFrameworkWorkSpace工程,向该workspace添加上面创建的framework、demo两个工程。



四、配置framework工程参数:
1.设置iOS Deployment Target
iOS Deployment Target, 静态库需要支持的最低版本号要小于等于主项目的版本号
2.设置Mach-O Type
2.MySDK->Build Settings->Mach-O Type->Static Library
3.设置Build Active Architecture Only
Build Active Architecture Only 修改为NO, 否则生成的静态库就只支持当前设备的架构;4.设置Excluded Architectures
设置Build Setting --> Excluded Architectures --> Debug --> 添加上 arm64
设置Build Setting --> Excluded Architectures --> Release --> 添加上 arm64
出现的原因是XCode12 编译的模拟器库新增支持架构arm64。
将模拟器的arm64给排除出去即可。

5.设置可以暴露的头文件:
5.1、将暴露头文件,拖到public下

5.2、将暴露的头文件import到MySDK.h.

五、脚本合并、生产合并后的framework:
1.合并脚本:
#!/bin/sh
BIN_DIR="bin"
if [ ! -d "$BIN_DIR" ]; then
mkdir -p "$BIN_DIR"
fi
BIN_DIR_TMP="bin_tmp"
if [ ! -d "$BIN_DIR_TMP" ]; then
mkdir -p "$BIN_DIR_TMP"
fi
cp -af ${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.framework/ ${BIN_DIR_TMP}/${PLATFORM_NAME}-${TARGET_NAME}.framework
cp -af ${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.framework/ ${BIN_DIR}/${TARGET_NAME}.framework
lipo -create $BIN_DIR_TMP/*-${TARGET_NAME}.framework/${TARGET_NAME} -output ${BIN_DIR}/${TARGET_NAME}.framework/${TARGET_NAME}
2.将上面的脚本放倒一个脚本文件中,取名:framework.sh
3.将framework.sh脚本文件放倒sdk工程目录,要与MySDK.xcodeproj同级的目录中。
4.在framework的工程中,添加脚本文件,如下:
5.选择真机command+b,build一次,再选择模拟器build一次,即可得到合并后的framework.(bin_tmp文件中包含的是模拟器或真机,bin是合并好的framework)
6.验证framework:

合并报错:have the same architectures (arm64) and can't be in the same fat output file;
iOS 合并SDK 报错 have the same architectures (arm64) and can't be in the same fat output file - 简书
以上就完成了framework的制作!!!