事情是这样的。
我正在用 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 。
有什么办法吗?
多谢阅读和指教:)
1
hewigovens 2016-07-14 07:07:30 +08:00 1
你也可以写个 podspec , a/b/c 作为 final 的 subspec ,这样最终出来的就是一个 framework 。
|
2
kitalphaj 2016-07-14 07:55:31 +08:00 1
把 a\b\c 暴露给用户没什么,只要你保证 access control 做好,应该是没有什么问题的。
|
3
FreshOldMan 2020-10-23 15:10:58 +08:00
大神,最后怎么办的
|
4
rshinich 2021-11-20 09:36:07 +08:00
同问,最后怎么办的呢。
|