Xcode 11 带来的 XCFramework,一句话理解:把 iOS、macOS、tvOS、watchOS 以及它们各自的 arm64、x86_64、armv7k 等架构,全部塞进同一个文件夹,Xcode 自动挑最合适的那个,开发者再也不用玩“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
② 再一锅端
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 穿好护甲,别让辛苦写的代码变成别人的“免费教材”。