gpt4 book ai didi

cocoapods - 如何创建具有规范之外存在的依赖项的 CocoaPods podspec?

转载 作者:行者123 更新时间:2023-12-02 21:44:30 29 4
gpt4 key购买 nike

我有一个库的公共(public)分支,该库已存在于 CocoaPods/Specs 中。在 Podfile 中,我可以通过执行以下操作来引用此 fork 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)?

最佳答案

这是 podspec 不允许的,因为允许这样做会使其他 podspec 几乎不可能定义它们所依赖的包和/或其他包可能会因为意外的 API 差异而损坏。

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

  • Pod A:s.dependency 'AFNetworking', :git => 'https://任意/位置'
  • Pod B:s.dependency 'AFNetworking', '> 2'

现在有一些潜在的问题:

  1. 此时,我们不知道“Pod A”存储库中的版本是什么,直到我们下载它,这会浪费大量时间,以防 AFNetworking 上的各种常见依赖项(例如“Pod B”)无法运行满意就好。
  2. 但更糟糕的是,如果“Pod A”确实符合其他 Pod(例如“Pod B”)的依赖版本要求,但 AFNetworking 代码实际上来自 fork 的源位置,并且它更改了“Pod B”所依赖的一些基本 API。这将无声地违背 CocoaPods 试图做出的 promise 。

我希望这能够清楚地说明为什么我们不能引入一种让 podspec 悄悄打破版本 promise 的方法。但是,在您的 Podfile 中,您可以覆盖任何 pod 的源位置,因为最终用户(应用开发者)拥有控制权,并且不应该有任何意外强>破损。

关于cocoapods - 如何创建具有规范之外存在的依赖项的 CocoaPods podspec?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22447062/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com