关于创建 iOS 静态库的问题

2016 年 3 月 28 日
 pscl

有个问题需要请问下大家,我本来有个 SDK 工程,里面是 C++的源文件,可以编译出.a 的静态库,但是现在有一第三方的 Framework ,我想把它加到我 SDK 工程里面,一起打包出来一个大的静态库。请问可以这样操作么?如果行的话,应该怎么操作呢? 谢谢!

3915 次点击
所在节点    iDev
8 条回复
LINAICAI
2016 年 3 月 28 日
再开一个工程,把 Lib 和 Framework 拉进去?
pscl
2016 年 3 月 28 日
@LINAICAI 目前就是准备这样做,扔 Framework 进去,打出来的.a 大小不变,应该是没包含,扔第三方 SDK 的.a 版本进去,打出来的.a 变大了,应该包进去了,只是还没测试验证。我在想是不是包 Framework ,需要我自己写个调用才能把里面的代码打进去呢?
juxingzhutou
2016 年 3 月 28 日
在 Framework 类型的 target 的 Link Binary With Libraries 里面加上那个.a 文件只会在 framework build 时链接这个静态库,并不会包含这个静态库。

想要结合两个静态库的话,可以使用 lipo 命令。.a 文件只是可重定位目标模块的集合,你可以看成一个目标模块的文件夹。
juxingzhutou
2016 年 3 月 28 日
不过还是推荐不要合并两个静态库,特别是你打包出的大的静态库需要提供给其他人使用的情况下。因为这样人家想剔除符号冲突的静态库就麻烦了。以前有很多第三方框架为了方便用户使用(不用额外链接第三方框架依赖的其他库)而打包了一些常用库,结果在用户用了两个打包了同一个常用库的第三方库的时候就爆炸了。
qq2511296
2016 年 3 月 28 日
应该可以的 你可以看看 ijkplayer 他是把 ffmpeg 的静态库 编译进了 ijkmedia.framework 里面去了
artkernelzyc
2016 年 3 月 28 日
建议不要这样,还是提供 2 个 sdk 比较好
skyline75489
2016 年 3 月 28 日
楼上 +1 ,还是分开好管理
pscl
2016 年 3 月 28 日
@juxingzhutou 非常感谢,确实公司的想法和你说的情况类似,也是为了集成一个第三方的而去强行做所谓的简化手段,╮(╯▽╰)╭
@qq2511296
@artkernelzyc
@skyline75489 非常感谢,主要是那要集成的不是我司的,只是我司在用,我倒是愿意提供两个独立的,都方便啊。

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

https://study.congcong.us/t/266896

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

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

© 2021 V2EX