一分钟速读
苹果在 Xcode 11 扔出的 XCFramework,相当于"通用框架收纳盒"。iOS、macOS、tvOS、watchOS,再加上 arm64、x86_64、armv7k 等各路架构,全部塞进一个文件夹,Xcode 自动按需取用,再也不用手动 lipo 来 lipo 去。
为什么选它
1. 多平台一盒端走
传统 Framework 一个包只能侍候一个平台,XCFramework 直接"全家桶"------真机、模拟器、Mac、手表全带上,谁用谁省心。
2. 架构不再互掐
arm64 真机与 x86_64 模拟器同时存在也不会符号冲突,一份 XCFramework 解决所有"架构打架"现场。
3. 发版像快递
对外交付只传一个 .xcframework 文件夹,接入方拖进工程、Embed & Sign 三连,集成时间按分钟计。
4. 静动双吃
不论静态 .a / .framework,还是动态 .dylib / .framework,都能往里塞,自由度拉满。
三步出锅
① 各编各的
先按平台分别 Archive,得到:
archives/ios.xcarchive/Products/Library/Frameworks/Foo.frameworkarchives/sim.xcarchive/Products/Library/Frameworks/Foo.framework
② 一键合体
sh
xcodebuild -create-xcframework \
-framework archives/ios.xcarchive/Products/Library/Frameworks/Foo.framework \
-framework archives/sim.xcarchive/Products/Library/Frameworks/Foo.framework \
-output Foo.xcframework
③ 拖就完事
把 Foo.xcframework 扔进 Xcode → Build Phases 加依赖 → Frameworks, Libraries, and Embedded Content 选 Embed & Sign,收工。
安全别掉线
可能踩的坑
XCFramework 本质是一摞 Mach-O 文件,直接发布≈裸奔:
- 逆向:IDA、Ghidra 分分钟出伪代码,业务逻辑高清无码。
- 调试:lldb 一挂,密钥、算法现场直播。
- Patch:内存一改,校验秒变空气。
- 符号泄露:Debug 符号没剥干净,函数名就是官方文档。
低成本加固
目前 Virbox Protector 还没法直接对 .xcframework 整包加壳,但可以先对里面的 .framework 或可执行文件单独做加固(混淆、虚拟化、反调试),再重新 xcodebuild -create-xcframework 打包即可。
官方操作手册:
Native程序保护最佳实践
总结一句话:
XCFramework 让"写一次、跑多端"成为日常,但上线前记得先给 Mach-O 穿好护甲,别让辛苦写的代码变成别人的"免费教材"。