iOS Swift 创建Framework 打包xcFramework

创建Framework

1.创建Framework
截屏2025-03-22 20.38.09.png
2.添加文件
截屏2025-03-22 20.39.27.png
3.设置支持环境

Build Active Architecture Only 设置为 NO 时,编译支持的多个版本,如:armv7,arm64

截屏2025-03-22 20.41.31.png

Buliding Settings -> Linking -> Dead Code Stripping 设置为 NO

Dead Code Stripping 无效代码剥离
是一项优化技术,用于在iOS应用程序构建过程中删除未使用的代码,以减小最终应用的大小。但是对于framework来说,应该设置为NO,避免代码、调试符号等被剥离。

截屏2025-03-22 20.42.41.png

Buliding Settings -> Linking -> Mach-O Type 设置为Static Library 静态库

截屏2025-03-22 20.43.00.png

Build Libraries for Distribution 设置为 Yes 分发构建库

Build Libraries for Distribution选项设置为Yes是为了确保生成的库文件包含必要的接口文件,以便于向下兼容性。这个选项告诉编译器生成.swiftinterface文件,这对于将来使用低版本的Swift 编译器加载旧版本库非常重要。

截屏2025-03-23 22.42.36.png
Executable:  `静态库`,输出二进制
Dynamic Library:`动态非共享库`,输出动态链接库非共享库,程序`运行`时链接到`内存,大部分场景下不可共享;app extension、部分macOS场景下可以共享
Bundle:`动态非共享库`,和Dynamic Library相近,不过需要手动调用函数加载
Static Library:  `静态库`,输出静态链接库,程序`编译`时拷贝到`内存`
Relocatable Object File:`静态库`,和Static Library类似,但体积更小
4.设置 Minimum Deployments 最低支持版本
截屏2025-03-22 20.48.18.png
5.设置 Build ConfigurationRelease
截屏2025-03-22 20.41.58.png

Aggregate打包静态库

1.创建 Aggregate 添加Target生成
截屏2025-03-22 20.48.52.png
2.修改 User Script SandboxingNo
截屏2025-03-22 20.52.06.png
3.添加脚本
截屏2025-03-22 20.52.39.png
截屏2025-03-22 20.53.18.png
#!/bin/sh

SCHEME_NAME="${PROJECT_NAME}"
FRAMEWORK_NAME="${PROJECT_NAME}"
SIMULATOR_ARCHIVE_PATH="${BUILD_DIR}/${CONFIGURATION}/${FRAMEWORK_NAME}-iphonesimulator.xcarchive"
DEVICE_ARCHIVE_PATH="${BUILD_DIR}/${CONFIGURATION}/${FRAMEWORK_NAME}-iphoneos.xcarchive"
OUTPUT_DIC="${PROJECT_DIR}"


#Clean
 rm -rf ./archives
 rm -rf "${OUTPUT_DIC}/${FRAMEWORK_NAME}.xcframework"


# Simulator xcarchieve
xcodebuild archive \
  -scheme ${SCHEME_NAME} \
  -archivePath ${SIMULATOR_ARCHIVE_PATH} \
  -sdk iphonesimulator \
  SKIP_INSTALL=NO \
  BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
# Device xcarchieve
xcodebuild archive \
  -scheme ${SCHEME_NAME} \
  -archivePath ${DEVICE_ARCHIVE_PATH} \
  -sdk iphoneos \
  SKIP_INSTALL=NO \
  BUILD_LIBRARIES_FOR_DISTRIBUTION=YES

# Create xcframwork combine of all frameworks
xcodebuild -create-xcframework \
  -framework ${SIMULATOR_ARCHIVE_PATH}/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework \
  -framework ${DEVICE_ARCHIVE_PATH}/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework \
  -output ${OUTPUT_DIC}/${FRAMEWORK_NAME}.xcframework

#open  OUTPUT_DIC
open "${OUTPUT_DIC}"
4.运行脚本生成 xcFramework
截屏2025-03-22 20.54.05.png
截屏2025-03-23 23.10.14.png

Framework使用

1.在项目 Frameworks, Libraries, and Embedded Content 中拖入 xcFramework 文件夹
截屏2025-03-23 22.01.29.png
2.代码中使用
截屏2025-03-23 22.01.44.png
截屏2025-03-23 22.02.46.png

学习Demo:

xcFramework Demo

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容