14

我的 iOS 应用程序使用 Cocoapods 来管理 AFNetworking、SDWebImage 等库。

其中一个库恰好有一个错误,该错误已在最前沿版本中修复,但尚未传播到 cocoapods 版本。我想为这个库制作一个补丁,并能够与我的团队分享。处理此问题的推荐方法是什么?

附带说明:我想可能会发生类似情况,我想分叉一个库。如果我有办法在库更新时将我的更改合并到新版本中,那就太好了。在这种情况下可以使用类似的工作流程吗?

4

3 回答 3

20

我不会声称这是最好的选择,但它是一种选择。您可以使用 Podfile 中的 post install hook 来执行 patch 命令。我通过将以下内容放在我的 Podfile 的底部来完成它。

post_install do |installer|
    puts 'Patching SVGKit to compile with the ios 7 SDK'
    %x(patch Pods/path/to/file.m < localpods/patches/fix.patch)
end

请注意,如果路径中有任何空格,则需要转义为 shell 转义空间的反斜杠。“\ “ 代替 ”\ ”。有关生成补丁的快速方法,请参阅http://stephenjungels.com/jungels.net/articles/diff-patch-ten-minutes.html 。因为我使用的是 1 个简单文件,所以我只创建了一个简单的 diff 而不是统一的。

于 2014-04-08T15:31:05.183 回答
10

对库进行分叉、应用补丁并在 Podfile 中指向您的分叉将是您的最佳选择。

如果库包含 podspec:

pod '<library', :git => 'https://github.com/yourname/<library>.git'

如果库中不包含 podspec,则必须将 podspec 复制到本地路径并进行调整:

pod '<library>', :podspec => 'local/path/to/<library>.podspec'
于 2013-05-29T20:14:05.817 回答
0

你可以:

  1. 如 Marcel 所述,分叉 lib 并指向您在 Podspec 中的分叉 - 缺点是您必须针对上游维护它。

  2. 生成一个差异文件,根据您修改后的源代码针对未修改版本的 pod,类似于 Sam 上面提到的。

  3. 使用这个 CocoaPods 插件,使#2 的过程更容易。见https://github.com/DoubleSymmetry/cocoapods-patch

于 2020-07-09T16:21:47.950 回答