CocoaPods实践

为什么需要使用CocoaPods

  • 货车帮iOS货主版一共用了34个三方库,集成这些库到这些工程中来,我们需要做很多事情
    • 复制源码
    • 添加framework
    • 某些开源库,设置编译参数
    • 更麻烦的是管理这些依赖库的更新
      • 私有的公共库的管理

CocoaPods的介绍

  • CocoaPods是一个用来帮助我们管理第三方依赖库的工具
    • 使用CocoaPods的目的是让我们能自动化的、集中的、直观的管理第三方开源库

CocoaPods的原理

  • 第三方库会被编译成.a静态库供我们真正的工程使用
  • 我们的工程和第三方库所在的工程会由一个新生成的workspace管理
  • 原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理
  • CocoaPods通过一个名为Pods.xcconfig的文件来在编译时设置所有的依赖和参数

与 Carthage的比较

  • CocoaPods默认会自动创建并更新你的应用程序和所有依赖的Xcode workspace。Carthage使用xcodebuild来编译框架的二进制文件,但如何集成它们将交由用户自己判断。CocoaPods的方法更易于使用,但Carthage更灵活并且是非侵入性的。
  • Cocoapods是一个中心化的依赖管理工具,能提高第三方库的可见性和参与度。Carthage是一个去中心化的依赖管理工具,它没有总的仓库列表,这能减少维护工作并且避免任何中心化带来的问题。
  • Carthage只支持动态库,所以只能在iOS8以上的版本中使用。

CococaPods在我们项目中的使用

  • 可以用来管理一些我们项目中的三方库
  • 尽量避免对这些三方库的修改,如果需要修改
  • 如果需要修改
    • 尽量在外部修改
    • fork一份代码创建一个私有库,并保持这个库的跟进更新
    • 万不得已用原始的方式添加
  • 创建私有仓库,管理组件化的公共库
    • 私有库的创建过程
    • 可能会存在的一些问题,
      • 复杂组件耦合度太高,难以创建私有库
      • 复杂组件创建subspec
    • 好处
      • 避免重复造轮子
      • 这也是一种知识产出
  • 注意事项
    • 该组件的作者负责创建并维护该私有仓库,在xxx.md中写清楚该组件的详细使用,并提供Demo
    • 如果需要引入三方库,需要技术团队进行评估
    • 代码的管理

参考文章链接

  • 用CocoaPods做iOS程序的依赖管理
  • Carthage:去中心化的Cocoa依赖管理器
  • 使用Cocoapods创建私有podspec
  • CocoaPods最佳实践探讨

你可能感兴趣的:(CocoaPods实践)