我的iOS应用程序使用Cocoapods来管理AFNetworking,SDWebImage等库。
这个库中的一个碰巧有一个已经在最新版本中修复的错误,但它尚未传播到cocoapods版本。我想为这个库制作一个补丁,并能够与我的团队分享。推荐的解决方法是什么?
旁注:我想可能会出现类似情况,我想要分叉库。如果我有一种方法可以在库更新时将我的更改合并到新版本中,那将是很好的。在这种情况下是否可以使用类似的工作流程?
答案 0 :(得分:14)
我不会声称这是最好的选择,但它是一种选择。您可以使用Podfile中的post install挂钩来执行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空间的反斜杠。 &#34; \&#34;而不是&#34; \&#34;。有关生成修补程序的快速方法,请参阅http://jungels.net/articles/diff-patch-ten-minutes.html。因为我正在处理一个简单的文件,所以我只创建了一个简单的差异而不是统一的差异。
答案 1 :(得分:10)
分割库,应用补丁,并指向Podfile中的fork是最佳选择。
如果库包含podspec:
pod '<library', :git => 'https://github.com/yourname/<library>.git'
如果库不包含podspec,则必须将podspec复制到本地路径并进行调整:
pod '<library>', :podspec => 'local/path/to/<library>.podspec'
答案 2 :(得分:0)
您可以:
分叉库并指向Marcel提到的Podspec中的叉子-缺点是您必须将其保持在上游。
根据未经修改的Pod版本(如Sam上面提到的那样),根据修改后的源生成差异文件。
使用此CocoaPods插件可以简化#2的过程。参见https://github.com/DoubleSymmetry/cocoapods-patch