基于第三方framework1构建framework2,能否集成依赖并以XCFramework分发?
基于闭源UI框架构建并分发新Framework的问题解答
1. 能否将framework1作为依赖集成到framework2,并通过Swift Package以XCFramework形式分发?
可以,但不能将framework1的二进制包直接嵌入到framework2的XCFramework中。正确的方式是让framework2通过Swift Package Manager(SPM)声明对framework1的依赖,分发时仅提供framework2自身的XCFramework,同时要求最终使用者也通过SPM引入framework1的二进制包。
2. 此场景是否属于iOS不支持的伞形框架范畴?
不属于。iOS禁止的伞形框架指的是将其他完整框架嵌套打包进自身框架内部(比如把framework1的二进制文件放在framework2的Resources或Frameworks目录下),这种做法会引发符号冲突、加载失败等运行时问题。
而如果只是通过SPM声明依赖关系,两个框架独立存在、由系统分别加载,就完全符合iOS的框架规范,不属于伞形框架。
3. 是否应通过SPM将framework1作为二进制依赖添加到framework2中?
是的,这是当前场景下最合规且易维护的方案。具体操作如下:
- 在framework2的
Package.swift中,通过binaryTarget引入framework1的XCFramework(支持本地路径或远程仓库地址) - 让framework2的target明确依赖这个binaryTarget
- 打包framework2为XCFramework时,仅包含自身的二进制文件,不混入framework1的内容
这样,当使用者通过SPM引入framework2时,SPM会自动拉取并集成framework1的二进制依赖,保证两者的兼容性与正确加载。
额外注意事项
- 确认framework1的XCFramework支持你所需的所有架构(如arm64、x86_64)和目标平台(iOS、iPadOS等)
- 与供应商确认framework1的许可协议,允许其作为第三方依赖被其他框架引用
- 测试阶段需验证完整依赖链:使用者集成后,framework1和framework2的组件都能正常初始化和调用
内容的提问来源于stack exchange,提问作者Vishwa
相关产品推荐
相关产品推荐

