我正在将我们内部使用的静态库转换为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依赖关系的看似多余的机制之间有什么不同?为什么我要使用一个,或者不使用另一个,或者两者都使用?
发布于 2017-12-01 07:00:45
第一个场景用于指示您的库对HockeySDK有一个运行时(也包括编译时,因为在cocoapods中,所有运行时的东西都是编译时的)依赖。
第二种情况是您的目标依赖于HockeySDK进行构建。
区别是相当微妙的,但如果你不是静态链接的话就更明显了。由于您是静态链接,因此编译时和运行时依赖项是相同的(意味着第二个场景与第一个场景相同)。
如果您是针对HockeySDK动态链接的,则需要让宿主应用程序意识到这一点,以便它可以在链接库时提供依赖库。这样做的方法是通过podspec传播依赖项。
在podfile中,声明1.目标和2.为了编译目标,您需要来自HockeySDK的目标文件和头文件。这只会影响您自己的库的构建。使用您的库的用户使用等级库,而不是Podfile。
https://stackoverflow.com/questions/30629587
复制相似问题