很早以前就制作过.framework, 这次因为需求又需要制作但是按照以前的方法制作出来的都不能正常使用,经过查资料又重新整理出一份
1. Xcode 配置一下
Edit Scheme->Run->Build Configuration改为ReleaseTARGETS->Build Settings->Build Active Architecture Only设置为NO(NO编译支持所有版本的架构,YES只编译当前版本的架构)TARGETS->Build Settings->Excluded Architectures->Release添加Any iOS Simulator SDK值为arm64(排除用模拟去编译时生成 arm64的架构,因为在制作.framework时合并真机和模拟器由于都有arm64架构导致失败)TARGET->Build Settings->Linking->Mach-O Type修改为Static Library(默认是 Dynamic Library)Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.2 compiler报错是因为编写Swift版本不一样。解决办法:Build Setting->Build Libraries for Distribution设置为YES否则Swift编译器不会生成必要的.swiftinterface文件,这是将来编译器能够加载旧库的关键/xxxx/xxx.xcodeproj Building for iOS, but the linked and embedded framework ‘xxx.framework’ was built for iOS + iOS Simulator.(真机和模拟器合成就报这个错误)
解决办法:
针对类似于iOS + iOS Simulator这种多平台的包,强制使用XCFramework框架
- 启用
Validate WorkSpace让Xcode对frameworks进行自动化管理
Build Setting->Build Options->Validate WorkSpace设置为YES
2.使用XCFramework
XCFramework教程
2. 合并真机和模拟器
先在桌面上创建
xxx.framework文件夹lipo -create 真机路径文件 模拟器路径文件 -output 桌面xxx.framework/xxx把真机文件中的
Headers,Modules拷贝到xxx.framework文件夹中,在把模拟器Modules文件内容拷贝到xxx.framework中-
拆分
lipo 文件 -thin 架构(例如armv7)-output 输出路径/文件名
QQ20210823-103440.png


3. 验证是否可用
1.创建Swift的工程验证是否可以正常使用
2.创建OC的工程验证是否可以正常使用
