【问题标题】:Cocoapods - Is it possible to customise 3rd party iOS libaries?Cocoapods - 是否可以自定义第 3 方 iOS 库?
【发布时间】:2014-06-17 19:40:40
【问题描述】:

我正在编写一个使用一系列 3rd 方 iOS 库(例如 TWStatus、BSKeyChain)的项目,其中一些我已修改(最多 10% 的自定义代码),但不适合原始GitHub 项目。

我考虑了库作者的未来更新,今天遇到了CocoaPods,它看起来是一个很好的依赖管理器,与 Bundle 或 Vundle(用于 Vim)相同。

我很好奇我的自定义代码是否可以与库作者使用 CocoaPods 进行的未来更改共存??

【问题讨论】:

    标签: ios cocoapods


    【解决方案1】:

    默认情况下,CoocaPods 会拉入一个库作为源,以及构建该库的说明。 (闭源库有一些例外)。因此,这使得在项目上下文中调试问题和测试更改变得容易。

    决定更改后,您应该执行以下操作之一:

    • 将更改提交回主库。您将受益于能够轻松升级到包含更广泛社区提供的所有测试的新版本。最简单的方法是分叉库,应用更改,然后发送拉取请求

    • 如果您的更改对库的其他用户没有真正的好处,您可以只分叉库,而无需将更改提交给 master。如果许可证允许,您可以维护一个私有分叉,并仍然从 CocoaPods 解决它。为此:

    Podfile:

    #As long as the pod-spec is published at the root of the git repo, this works. 
    pod 'MyFantasticLib', :git => 'https://github.com/dogue/Doguetastic.git'
    #. . and you can use this lib while you're waiting for your pull req. to be approved.
    

    您也可以考虑设置private spec repo

    第一个选项通常是最好的。

    【讨论】:

    • 感谢@Jasper Blues 的解释。我最终得到了一个混合 - 一些使用 Cocoapods 管理的库。那些需要定制的,我提交一个拉取请求,或者如果拉取被拒绝,我将保留为我的子回购:D
    【解决方案2】:

    所以,要清楚。

    您已对依赖项进行了更改 您还希望使这些依赖项保持最新。

    --

    在我看来,这将是一种痛苦。对于每个更新,每个 pod/依赖项,您都需要将新内容合并到您自己的版本中。

    但是,如果您进行了更改……您真的需要吗?考虑使用适配器或外观模式为它们编写一个包装器,然后您可以随意更新它们(假设它们的接口没有改变)。

    只是一些想法

    【讨论】:

    • +1 用于建议外观模式。我正在考虑做那个或类扩展。
    猜你喜欢
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多