使用carthage 制作xcframework_m0_47450499的博客-CSDN博客使用carthage 制作xcframeworkhttps://blog.csdn.net/m0_47450499/article/details/123475342?spm=1001.2014.3001.5501
一、创建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;
参考:Xcode 12打包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的制作!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)