我的 iOS 应用程序使用 Cocoapods 来管理 AFNetworking、SDWebImage 等库。
其中一个库恰好有一个错误,该错误已在最前沿版本中修复,但尚未传播到 cocoapods 版本。我想为这个库制作一个补丁,并能够与我的团队分享。处理此问题的推荐方法是什么?
附带说明:我想可能会发生类似情况,我想分叉一个库。如果我有办法在库更新时将我的更改合并到新版本中,那就太好了。在这种情况下可以使用类似的工作流程吗?
我不会声称这是最好的选择,但它是一种选择。您可以使用 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 而不是统一的。
对库进行分叉、应用补丁并在 Podfile 中指向您的分叉将是您的最佳选择。
如果库包含 podspec:
pod '<library', :git => 'https://github.com/yourname/<library>.git'
如果库中不包含 podspec,则必须将 podspec 复制到本地路径并进行调整:
pod '<library>', :podspec => 'local/path/to/<library>.podspec'
你可以:
如 Marcel 所述,分叉 lib 并指向您在 Podspec 中的分叉 - 缺点是您必须针对上游维护它。
生成一个差异文件,根据您修改后的源代码针对未修改版本的 pod,类似于 Sam 上面提到的。
使用这个 CocoaPods 插件,使#2 的过程更容易。见https://github.com/DoubleSymmetry/cocoapods-patch