微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建一个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的源位置,因为它是最终用户(应用程序开发人员)谁是控制,不应有任何意外的破坏。

原文地址:https://www.jb51.cc/javaschema/282341.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐