【问题标题】:Static library with cocoapod dependency: define in Podspec s.dependency, in Podfile, or both?具有 cocoapod 依赖项的静态库:在 Podspec s.dependency 中定义,在 Podfile 中定义,或两者兼而有之?
【发布时间】:2015-08-18 05:21:42
【问题描述】:

我正在将我们内部使用的静态库转换为 CocoaPod,以便我们的主机应用程序可以通过在其 Podfile 中引用它来简单地将其拉入。这个静态库又依赖于名为 HockeySDK 的第三方 Pod。

在我的静态库的 Podspec 中,我指出 HockeySDK 依赖项如下:

 # MyStaticLib requires the latest HockeySDK framework:
 s.dependency "HockeySDK", "3.6.4"

我还在我的静态库根目录中的 Podfile 中指出了依赖关系:

target "MyStaticLib" do
   pod "HockeySDK", "3.6.4"

这似乎工作正常 - 如果我在 MyApp 的 Podfile 中引用 MyStaticLib,它会拉入 MyStaticLib 并神奇地拉入 HockeySDK 依赖项,一切都很好。

这两种看似多余的指示 HockeySDK 依赖关系的机制有什么区别?为什么我要使用其中一个或不使用另一个或两者都使用?

【问题讨论】:

    标签: ios static-libraries cocoapods


    【解决方案1】:

    第一个场景用于表明您的库对 HockeySDK 有运行时(以及编译时,因为在 cocoapods 中基本上所有运行时的东西也是编译时)依赖。

    第二个场景说你的目标依赖于 HockeySDK 来构建。

    差异非常微妙,但如果您不是静态链接,则更为明显。由于您是静态链接,因此编译时和运行时依赖项是一回事(意味着第二种情况与第一种情况相同)。

    如果您针对 HockeySDK 进行动态链接,则需要让宿主应用程序意识到这一点,以便在链接您的库时提供依赖库。做到这一点的方法是通过 podspec 传播依赖关系。

    在 podfile 中,您声明 1. 一个目标,以及 2. 您需要目标文件以及 HockeySDK 的头文件才能编译目标。这只会影响您自己的图书馆的建设。使用您的库的人使用规范而不是 Podfile。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2018-12-05
      • 2011-03-03
      • 2014-12-13
      • 1970-01-01
      • 2011-06-17
      • 2015-10-14
      相关资源
      最近更新 更多