假如你要做一个第三方库,但是你的代码引用了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中就冲突了~
有劳各位谁懂得不吝赐教
巴扎黑2017-04-18 09:51:09
AFN などの一部のサードパーティ ライブラリは、管理のために B および C の Cocoapod によって直接インポートできます。 B と C をコンパイルするときに AFN をコンパイルしないでください。注意すべき点は、B と C で使用される AFN はプロジェクト A の AFN バージョンと一致している必要があり、一致していないとコンパイル エラーが発生する可能性があることです
怪我咯2017-04-18 09:51:09
動的ライブラリと静的ライブラリについて理解するだけです。
動的ライブラリと静的ライブラリの区別は、フレームワークと .a ライブラリの区別ではないことに注意してください。フレームワークにも静的区別と動的区別があり、Mach-O によって決定されるコンパイル設定で調整できます。タイプオプション。
つまり、A が B と C を使用し、B と C の両方が D を使用する場合、複数回参照する必要があるライブラリは D だけであるため、D を動的ライブラリにコンパイルする方が良いでしょう。動的と静的の違いの 1 つは、静的ライブラリが参照と一緒にコンパイルされることです。そのため、D が静的ライブラリの場合、B と C の両方に D のコードのコピーが含まれることになり、A がコンパイルされると競合が発生します。 D が動的である場合、ライブラリを追加する場合、A は 3 つのライブラリ BCD と BCD に同時にリンクする必要があり、その後正常に呼び出すことができます。
をポッドのポッドファイルに追加しますuse_frameworks!
フレームワークにコンパイルできます。
B と C が別個のプロジェクトの場合、フレームワークをコンパイルするときに [インストールのスキップ] を [いいえ] に設定すると、達成後にオーガナイザー ウィンドウがエクスポート用にポップアップ表示され、エクスポートされたフレームワークをリリースして使用できます。