如何创建一个CocoaPods podspec具有存在于Specs之外的依赖关系?

我有一个已经存在于CocoaPods / Specs中的库的公共叉。在Podfile中,我可以通过这样做引用此分叉pod:
pod 'CoolLibrary',:git => 'git@github.com:myname/CoolLibrary-Forked.git',:commit => 'abcdef1234567890abcdef1234567890'

我试着把这在我的MyLibrary.podspec:

s.dependency 'CoolLibrary',:commit => 'abcdef1234567890abcdef1234567890'

但得到以下错误消息:

-> MyLibrary.podspec
 - ERROR | The specification defined in `MyLibrary.podspec` Could not be loaded.


[!] Invalid `MyLibrary.podspec` file: [!] Unsupported version requirements. Updating CocoaPods might fix the issue.

是否可以以这种方式在.podspec中指定依赖关系(即,对于具有podspec但不在CocoaPods / Specs中的pod)?

这是podspecs不允许的,因为允许这样会使得其他podspecs不可能定义他们依赖的包和/或其他包可能会破坏因为意外的API差异。

例如,考虑依赖于AFNetworking的两个pod,但是一个指定外部源位置(Pod A),而另一个仅指定最小版本要求(Pod B):

> Pod A:s.dependency’AFNetworking’,:git => ‘https:// arbitrary / location’
> Pod B:s.dependency’AFNetworking’,’> 2′

现在有几个潜在的问题:

>在这一点上,我们不知道什么版本是在“Pod A”repo,直到我们下载它,这是一个巨大的浪费时间,以防万一AFNetworking(例如’Pod B’)的各种共同依赖不能满足。
>但是更糟糕的是,如果’Pod A’确实匹配其他pod(例如’Pod B’)的依赖性版本要求,但AFNetworking代码实际上来自分叉源位置,并且它改变了一些必要的API’Pod B’依赖于取决于。这将打破CocoaPods尝试做的承诺。

我希望这使清楚为什么我们不能介绍一种方法podspecs地打破版本的承诺。但是,从您的Podfile,您可以覆盖任何pod的源位置,因为它是最终用户(应用程序开发人员)谁是控制,不应有任何意外的破坏。

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...