搜索

首页  >  问答  >  正文

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中就冲突了~

有劳各位谁懂得不吝赐教

阿神阿神2771 天前366

全部回复(2)我来回复

  • 巴扎黑

    巴扎黑2017-04-18 09:51:09

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

    回复
    0
  • 怪我咯

    怪我咯2017-04-18 09:51:09

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

    要注意的是,动态库和静态库的区分不是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才可以进行发布使用。

    回复
    0
  • 取消回复