4

我还没有在 Podfile 文档中找到这个问题的答案,所以我不确定它是否可能。

我想安装一个具有 3 个依赖项的 CocoaPods 项目。我将它添加到我的 Podfile 中:

pod 'IDMPhotoBrowser'

并运行安装:

$ pod install

Installing DACircularProgress (2.1.0)
…
Installing IDMPhotoBrowser (1.2)
…
Installing SVProgressHUD (0.9)

但是,我的项目中有一个 SVProgressHUD 的破解版本,其中包含当前 repo 中没有的代码。此外,SVProgressHUD 0.9 是从一月份开始的,从那时起还有几个月的额外提交。我想改用我手动添加的版本。

我可以在我的 Podfile 中指定SVProgressHUD应该安装的,以便使用我手动添加的版本吗?还是我每次运行时都需要手动删除它?pod install

备择方案

我知道我可以将我的 fork 上传到 github 并执行以下操作:

pod 'SVProgressHUD', :git => '<my git repo>', :commit => '<my sha>'

但我希望不需要上传代码只是为了让 Cocoapods 做我想做的事。

4

1 回答 1

7

与其说是阻止依赖,不如说是用你自己的来覆盖它。这意味着 CocoaPods 需要SVProgressHUD在激活之前找到您的本地副本并在主规范 repo 中IDMPhotoBrowser查找。SVProgressHUD

您可以通过SVProgressHUD使用本地 podspec在 Podfile 中声明您的 first 版本来实现您想要的设置:

  1. 您的自定义版本需要位于项目的子目录中,并且在该目录的根目录下具有有效的 podspec,例如External/SVProgressHUD/SVProgressHUD.podspec.
  2. 像这样更新您的 Podfile:

    pod 'SVProgressHUD', :path => 'External/SVProgressHUD' # this needs to be declared first
    pod 'IDMPhotoBrowser' # your custom pod will be used as the dependency here
    

如果您没有本地 podspec,您应该能够获取 0.9 版本的副本SVProgressHUD(并在必要时对其进行修改以编译您添加的任何新代码)。

于 2013-08-25T22:45:49.903 回答