有个问题需要请问下大家,我本来有个 SDK 工程,里面是 C++的源文件,可以编译出.a 的静态库,但是现在有一第三方的 Framework ,我想把它加到我 SDK 工程里面,一起打包出来一个大的静态库。请问可以这样操作么?如果行的话,应该怎么操作呢? 谢谢!
1
LINAICAI 2016-03-28 17:51:42 +08:00
再开一个工程,把 Lib 和 Framework 拉进去?
|
2
pscl OP @LINAICAI 目前就是准备这样做,扔 Framework 进去,打出来的.a 大小不变,应该是没包含,扔第三方 SDK 的.a 版本进去,打出来的.a 变大了,应该包进去了,只是还没测试验证。我在想是不是包 Framework ,需要我自己写个调用才能把里面的代码打进去呢?
|
3
juxingzhutou 2016-03-28 18:20:45 +08:00
在 Framework 类型的 target 的 Link Binary With Libraries 里面加上那个.a 文件只会在 framework build 时链接这个静态库,并不会包含这个静态库。
想要结合两个静态库的话,可以使用 lipo 命令。.a 文件只是可重定位目标模块的集合,你可以看成一个目标模块的文件夹。 |
4
juxingzhutou 2016-03-28 18:26:14 +08:00
不过还是推荐不要合并两个静态库,特别是你打包出的大的静态库需要提供给其他人使用的情况下。因为这样人家想剔除符号冲突的静态库就麻烦了。以前有很多第三方框架为了方便用户使用(不用额外链接第三方框架依赖的其他库)而打包了一些常用库,结果在用户用了两个打包了同一个常用库的第三方库的时候就爆炸了。
|
5
qq2511296 2016-03-28 18:27:02 +08:00
应该可以的 你可以看看 ijkplayer 他是把 ffmpeg 的静态库 编译进了 ijkmedia.framework 里面去了
|
6
artkernelzyc 2016-03-28 18:39:33 +08:00
建议不要这样,还是提供 2 个 sdk 比较好
|
7
skyline75489 2016-03-28 18:50:46 +08:00
楼上 +1 ,还是分开好管理
|
8
pscl OP @juxingzhutou 非常感谢,确实公司的想法和你说的情况类似,也是为了集成一个第三方的而去强行做所谓的简化手段,╮(╯▽╰)╭
@qq2511296 @artkernelzyc @skyline75489 非常感谢,主要是那要集成的不是我司的,只是我司在用,我倒是愿意提供两个独立的,都方便啊。 |