可以将多个 Dynamic Framework 合并成一个吗?

2016-07-14 05:44:16 +08:00
 troyl

事情是这样的。

我正在用 Swift 写一个 Framework ,这个 Framework 的名字是 Final.framework 。

为了实现 Final.framework 各个 module 的功能,我又写了很多小的 Framework 以便重复使用,这些 sub-framework 的名字是 a.framework, b.framework, c.framework 。

当然,当一个 App 要用 Final.framework 的时候,它需要把 a.framework, b.framework, c.framework 也拖进自己的 Frameworks 文件夹。所以文件的结构是这样的:

|--- xxx.app
|    |--- Frameworks
|         |--- Final.framework
|              |--- Final
|         |--- a.framework
|              |--- a
|         |--- b.framework
|              |--- b
|         |--- c.framework
|              |--- c

当然,把 a, b, c 放进 Final.framework 的 Frameworks 文件夹也是可以的:

|--- xxx.app
|    |--- Frameworks
|         |--- Final.framework
|              |--- Final
|              |--- Frameworks
|                   |--- a.framework
|                        |--- a
|                   |--- b.framework
|                        |--- b
|                   |--- c.framework
|                        |--- c

然而,无论哪种结构,当我要把 Final.framework 给用户用时,我都势必要把 a.framework, b.framework, c.framework 也暴露给用户。

以前使用 Objective-C 时,可以生成 *.a 的 Static Library ,然后使用如下命令就可以将多个静态库合并成一个:

libtool -static -o libFinal.a libA.a libB.a libC.a

现在 Swift 只支持 Dynamic Framework ,所以上述命令不再有效(即使将 -static 换成 -dynamic)。

如果使用第三方库的话,大多数情况下都会使用 CocoaPod 来更新,但因为这些都是我自己写的,我希望最后给用户的是一个包含所有的、单一的、只有一个可执行文件的 Framework 。

有什么办法吗?

多谢阅读和指教:)

3466 次点击
所在节点    iDev
4 条回复
hewigovens
2016-07-14 07:07:30 +08:00
你也可以写个 podspec , a/b/c 作为 final 的 subspec ,这样最终出来的就是一个 framework 。
kitalphaj
2016-07-14 07:55:31 +08:00
把 a\b\c 暴露给用户没什么,只要你保证 access control 做好,应该是没有什么问题的。
FreshOldMan
2020-10-23 15:10:58 +08:00
大神,最后怎么办的
rshinich
2021-11-20 09:36:07 +08:00
同问,最后怎么办的呢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/292356

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX