XCFramework 口袋指南:多架构一锅端,上线前记得加锁

48 阅读2分钟

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.framework
  • archives/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 ContentEmbed & Sign,收工。

安全别掉线

可能踩的坑

XCFramework 本质是一摞 Mach-O 文件,直接发布≈裸奔:

  • 逆向:IDA、Ghidra 分分钟出伪代码,业务逻辑高清无码。
  • 调试:lldb 一挂,密钥、算法现场直播。
  • Patch:内存一改,校验秒变空气。
  • 符号泄露:Debug 符号没剥干净,函数名就是官方文档。

低成本加固

目前 Virbox Protector 还没法直接对 .xcframework 整包加壳,但可以先对里面的 .framework 或可执行文件单独做加固(混淆、虚拟化、反调试),再重新 xcodebuild -create-xcframework 打包即可。
官方操作手册:
Native程序保护最佳实践


总结一句话:
XCFramework 让“写一次、跑多端”成为日常,但上线前记得先给 Mach-O 穿好护甲,别让辛苦写的代码变成别人的“免费教材”。