定制Cocoapods的策略

时间:2014-11-21 23:56:13

标签: cocoapods

注意:我可以在此处看到此问题:Right way to extend or customize cocoapods

但我对答案不满意。如果不是简单地添加新方法等,你希望从根本上改变pod的性质,并且没有真正的时间向原始pod所有者提交补丁,那么一些更具体的细节将是很好的。他们是否一定想将特定于应用程序的更改提取到他们的通用项目中。)

目前我正在开发一个大量使用Cocoapods的项目,但目前项目的Pods目录或多或少因为多个pod的自定义而被冻结,以满足应用程序的需求。

由于自定义直接在pods类中完成,因此需要从新安装/更新中冻结Pod项目,因为似乎无法在不同时执行所有操作的情况下添加或更新单个pod。当自定义被更新消除时,自然会这样做会导致错误。

我知道在最新版本的Cocoapods中引入了更新单个pod的功能,但是新版本似乎引入了新问题,其中“分析依赖关系”通常会在单个pod与其自身之间出现错误的循环依赖关系时出错。

据我所知,没有办法添加单个pod而不同时更新其他pod。

那么,人们在没有陷入这种情况的情况下定制播客的策略是什么?在保持pods目录不变的情况下,是否在主项目中进行了子类化?

在一天结束时,pod真的比git子模块好多了吗?

感谢您提供有关如何使用它们的建议,同时仍然可以自由定制,而不是在这种情况下结束。

现在我的观点是,无需更改即可使用的pod可以像往常一样导入Pods项目,但是大量定制的pod应该添加到主项目中并完全与pod add / update进程分开。

1 个答案:

答案 0 :(得分:3)

你应该永远直接对任何Pod进行更改。

你应该做什么,如果你真的必须改变依赖的行为(即,你无法用任何其他替代方法解决问题,比如组合甚至类别),你应该创建一个fork然后进行更改那里。

然后,在您的Podfile上,您应该添加指向您的分支的链接:

pod 'MyLib', :git => 'https://github.com/someuser/MyLib.git'

此外,您的任何Pod都不应该引用您的应用代码。 依赖项应该是自包含的

您遇到的所有这些问题都不是CocoaPods(或任何其他工具)的错误。他们正在发生,因为你(和你的团队)误用了它。