apple frameworks
动态库 & 静态库,若单独输出并接入主工程,逻辑倒很清晰。如果牵涉到多个 framework 不同类型并且相互依赖,会增加不少复杂度。
以下说明中,动态库使用 DFramework 表示,静态库使用 SFramework 表示。
1 framework
仅需要提供 1 个 framework,直接提供 DFramework 即可。DFramework 优先,必要的时候再提供 SFramework
n framework
因为代码结构分组,可能需要提供多个 framework:
- DFramework 优先,能不提供 SFramework 就不要提供
- 有 n 个 DFramework 就提供 n 个。相互之间做好依赖文档,App 需要根据依赖文档 flat 平铺接入所有需要的 DFramework。
- 如果 b DFramework 仅仅被 a DFramework 依赖,可以将 b 打入 a DFramework 的
frameworks
文件夹中,通过embed
实现。- 这样就可以不再文档中说明 b DFramework 的存在,对外界透明。
- 这种方案,最终的 app 中 framework 不是 flat 平铺的,而是具有层级结构,如 :App - a DFramework - b DFramework
- 如果 b DFramework 同时被 m DFramework 和 n DFramework 依赖,不能将 b 隐藏(打入 m 和 n 中)。
- 否则,App 集成 m 和 n 的时候,b 会出现多份。如果 b 的版本不一样,将按照打包顺序只使用其中一个。