如何修补使用Cocoapods导入的库

Tau*_*aum 13 ios cocoapods

我的iOS应用程序使用Cocoapods来管理诸如AFNetworking,SDWebImage等库.

其中一个库碰巧有一个已经在最新版本中修复的错误,但它尚未传播到cocoapods版本.我想为这个库制作一个补丁,并能够与我的团队分享.推荐的解决方法是什么?

在旁注:我想可能会出现类似的情况,我想要分叉库.如果我有一种方法可以在库更新时将我的更改合并到新版本中,那将是很好的.在这种情况下可以使用类似的工作流程吗?

Sam*_*der 17

我不会声称这是最好的选择,但它是一种选择.您可以使用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
Run Code Online (Sandbox Code Playgroud)

请注意,如果路径中有任何空格,则需要转义逃避shell空间的反斜杠."\ " 代替 "\ ".有关生成修补程序的快速方法,请参见http://jungels.net/articles/diff-patch-ten-minutes.html.因为我正在处理一个简单的文件,所以我只创建了一个简单的diff而不是统一的diff.


Mar*_*cel 10

分叉库,应用补丁,并指向Podfile中的分叉将是您的最佳选择.

如果库包含podspec:

pod '<library', :git => 'https://github.com/yourname/<library>.git'
Run Code Online (Sandbox Code Playgroud)

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

pod '<library>', :podspec => 'local/path/to/<library>.podspec'
Run Code Online (Sandbox Code Playgroud)

  • 您还可以指定pod的本地路径:`pod'AFNetworking',:path =>'〜/ Documents/AFNetworking'`,如[文档]中所示(http://docs.cocoapods.org/podfile.html#pod ). (5认同)