iOS制作第三方库如果引用其他第三方库,如何添加引用?
阿神
阿神 2017-04-18 09:49:09
[iOS讨论组]

假如你要做一个第三方库,但是你的代码引用了AF,除了使用cocoapods管理你的项目依赖还有没有别的方式?举个例子ShareSDK里面肯定用了微信和新浪的SDK的代码或者API,但是ShareSDK里面肯定没有新浪和微信的SDK源码,我们在引用ShareSDK的时候需要往工程里拖入微信和新浪的SDK,ShareSDK才能正常分享到微信和新浪上,那这个ShareSDK在编译成库的时候,对新浪和微信的依赖是怎么设置的,并且ShareSDK在开发的时候项目里还必须能调用到新浪或者微信的SDK的API不影响开发。
总结一下:主工程A依赖库B、C,库B、C同时依赖公共库D,那如何引用才能让主工程只要引用库D,B、C在A中就能正常工作,但是B、C在开发的时候都可以单独开发,正常引用D。
xcode项目中编译配置如下几种方式,在开发B、C的时候如何设置D的引用?直接引用D的源码是肯定不行的,B、C全部包含D的代码,到A中就冲突了~

有劳各位谁懂得不吝赐教

阿神
阿神

闭关修行中......

全部回复(2)
巴扎黑

对于第三方的一些库,例如AFN,可以直接在B、C中由cocoapods导入,进行管理。编译B、C的时候不要把AFN编译进去就可以了。有一点需要注意,在B、C中使用的AFN和A项目中AFN版本要一致,否则可能出现编译报错

怪我咯

只要搞明白动态库和静态库就可以了。

要注意的是,动态库和静态库的区分不是Framework和.a库的区分,Framework同样有静态和动态的区别,在编译设置里面可以调整,Mach-O Type这个选项决定的。

所以,A 使用 B和C, B和C都使用D, 则 D编译成动态库比较好,因为D是唯一要多次引用的库。动态和静态的一个区别就是静态库会被引用者一起编译,所以如果D为静态库,B和C中都会包含一份D的代码,在A编译的时候就会说有冲突,当D为动态库时候,A需要同时link BCD三个库,就可以正常调用了。

pods的podfile中加入

use_frameworks!

就可以编译成Framework了。

B,C如果是单独的项目,编译Framework时候,把Skip Install设为NO,才可以在Achieve以后,弹出Organizer窗口进行导出,导出的Framework才可以进行发布使用。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号