찾다

 >  Q&A  >  본문

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일 전363

모든 응답(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

    동적 라이브러리와 정적 라이브러리만 이해하세요.

    동적 라이브러리와 정적 라이브러리의 구별은 프레임워크와 .a 라이브러리의 구별이 아니라는 점에 유의해야 합니다. 프레임워크에는 정적 및 동적 구별이 있으며 이는 Mach-O에 의해 결정되는 컴파일 설정에서 조정될 수 있습니다. 옵션을 입력하세요.

    따라서 A가 B와 C를 사용하고 B와 C가 모두 D를 사용하는 경우 D는 여러 번 참조해야 하는 유일한 라이브러리이므로 D를 동적 라이브러리로 컴파일하는 것이 좋습니다. 동적과 정적의 한 가지 차이점은 정적 라이브러리가 참조와 함께 컴파일된다는 것입니다. 따라서 D가 정적 라이브러리인 경우 B와 C 모두 A가 컴파일될 때 충돌이 발생합니다. D가 동적일 때 라이브러리를 추가할 때 A는 BCD 및 BCD 세 라이브러리에 동시에 연결해야 정상적으로 호출할 수 있습니다.

    Pod의 Podfile에

    을 추가하세요.

    use_frameworks!

    Framework로 컴파일할 수 있습니다.

    B와 C가 별도의 프로젝트인 경우 Framework 컴파일 시 Skip Install을 NO로 설정하면 Achieve 이후에 내보내기를 위한 Organizer 창이 팝업되고, 내보낸 Framework를 출시하여 사용할 수 있습니다.

    회신하다
    0
  • 취소회신하다