我有一个已经存在于CocoaPods / Specs中的库的公共分支。在Podfile中,我可以通过这样做来引用这个分叉的pod:
pod 'CoolLibrary', :git => 'git@github.com:myname/CoolLibrary-Forked.git', :commit => 'abcdef1234567890abcdef1234567890'
我尝试将其放入我的MyLibrary.podspec
:
s.dependency 'CoolLibrary', :git => 'git@github.com:myname/CoolLibrary-Forked.git', :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)?
答案 0 :(得分:66)
podspecs不允许这样做,因为允许其他podspecs几乎不可能定义他们所依赖的包和/或其他包可能因意外的API差异而中断。
例如,考虑两个依赖AFNetworking的pod,但是一个指定外部源位置(Pod A),而另一个指定最小版本要求(Pod B):
s.dependency 'AFNetworking', :git => 'https://arbitrary/location'
s.dependency 'AFNetworking', '> 2'
现在有几个潜在的问题:
我希望这能说清楚为什么我们不能为podspecs提供一种方法来默默地破坏版本的承诺。但是,从您的Podfile中, 允许覆盖任何pod的源位置,因为它是最终用户(应用程序开发人员),可以控制并且不应该有任何意外破损。
答案 1 :(得分:3)
依赖关系是very simple,只能定义Pod的名称和版本说明符。它们不能使用与Podfile中的依赖项相同的扩展名进行扩展。