iOS 依赖管理工具 CocoaPods 和 Carthage 的使用及原理

       随着互联网的高速发展,个大互联网公司为更高效研发自己的产品,而不断研发适合自己的平台的开发语言。当这些新的语言被广泛推广、被更多的开发团队所接纳,被用于开发不同的场景,这个过程中会研发出很多很多方便开发的框架。发展到一定阶段,都会出现相应的依赖管理工具。例如 Java 语言的 Maven (Java EE) 和 Gradle (Android),Node.js 的 npm ,Python 语言的 Pip ,OC/Swift 语言的CocoaPods、Carthage等。

       这里我主要想分享的是依赖管理工具 CocoaPods 和 Carthage 的使用、原理以及使用过程中的注意事项。


一、CocoaPods

1.CocoaPods 介绍

        CocoaPods 是用 Ruby 开发的 Xcode 项目管理依赖的工具。
        CocoaPods 的官方介绍:CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 43 thousand libraries and is used in over 3 million apps. CocoaPods can help you scale your projects elegantly.
        CocoaPods 管方网址:http://cocoapods.org/
        CocoaPods 开源仓库地址:https://github.com/CocoaPods/CocoaPods

开发iOS项目肯定会用到第三方开源的框架,CocoaPod 可以节省设置、下载、删除、更新第三方开源库的时间,提高开发效率。


2.CocoaPods 安装和使用

        a:CocoaPods 是在 Ruby 环境下开发的,幸好 Mac 系统本身是自带 Ruby 的。可以通过 Ruby -v 命令查看当前系统 Ruby 版本。使用 Ruby 的gem命令即可下载安装。
sudo gem install cocoapods
pod setup

注:(1).如果提示gem 版本太老,需要更新gem:
              sudo gem update —-system
      (2).如果安装过程缓慢,可以将官方的 Ruby 源替换成国内淘宝的镜像源。
              gem source —-remove https://rubygems.org/
              gem source -a http://ruby.taobao.org/
              gem sources -l
     (3).在执行 pod setup 命令时,会输出 Setting up CocoaPods master repo,这个过程会等待比较长的时间。这个过程其实是同步远程Cocoapods的信息,将信息下载到本地 ~/.cocoapods 目录中。可以通过网络查看器,查看当前的下载任务。cd /Users/kylin/.cocoapods/ 下载目录时,会看到 repos 文件夹。repos 文件夹中包含 CocoaPods 的所有项目的镜像索引,通过项目的镜像索引去远程仓库下载相应的第三方库。
            远程 Podspec 文件地址:https://github.com/CocoaPods/Specs。感兴趣的朋友可以查看。
            国内 Podspec 镜像地址:https://gitcafe.com/akuandev/Specs.git
                       http://git.oschina.net/akuandev/Specs.git

        安装完成后可以通过 pod --version 命令查看 CocoaPods 版本信息。显示版本号说明安装成功。

b:查找第三方库
当想查看第三方库的信息时,可以通过 pod search [] 命令进行搜索。这个搜索属于模糊搜索,会列出搜索内容相关的所有库。方便我们从中找到我们需要的库信息。

        例如:$: pod search afn

        


c:使用 CocoaPods 管理第三方库
首先在项目根目录下创建 Podfile 文件,按照如图格式编辑文件即可:



其次在放置 Podfile 文件的项目根目录下执行 pod install 命令。
完成之后会在根目录下出现 两个文件(*.xcworkspace,Podfile.lock)和一个文件夹(Pods)

*.xcworkspace: 项目启动文件。
Podfile.lock: 锁定当前各个依赖库的版本。(pod install 不会更改依赖库的版本,也就是不会修改 Podfile.lock 文件。pod update 会修改)
Pods 文件夹: 包含下载的第三方依赖,并且编译成 lib 库。

3.创建私有的 Pods 仓库
创建私有的 pods 仓库:http://blog.csdn.net/gulanggege/article/details/79349862
我们可以使用自定义的 podspec 。按如下方式编辑 Podfile 文件:
pod ‘ProvityFramework’ ,:podspec => ‘https://[…]’ […]自定义的私有仓库地址

4.CocoaPods 工作原理
CocoaPods 的原理是将所有的依赖库都放到另一个名为 Pods 的项目中,然后让主项目依赖 Pods 项目,这样源码管理工作从主项目转移到了 Pods 项目中。Pods 项目会编译成一个 libPods.a 文件,主项目只需要添加这个 .a 文件。


二、Carthage
1. Carthage 介绍
Carthage 是用 Swift 开发的项目管理依赖的工具,Carthage 的目的是用最简单的方式添加依赖库到 Cocoa 项目中。Carthage 为用户管理第三方框架和依赖,但不会自动修改项目文件和生成配置。
Carthage 的官方介绍:Carthage is intended to be the simplest way to add frameworks to your Cocoa application.Carthage builds your dependencies and provides you with binary frameworks, but you retain full control over your project structure and setup. Carthage does not automatically modify your project files or your build settings.

Carthage 开源仓库地址:https://github.com/Carthage/Carthage

2.Carthage 与 CocoaPods 的对比
  Carthage 的有点:
(1)Carthage 为用户管理第三方框架和依赖,但不会自动修改项目文件和生成配置。
(2)Carthage 是去中心化的依赖管理工具,安装依赖时不需要去中心仓库获取 CocoaPods 所有依赖的索引,节省时间。
(3)对项目无侵入性,Carthage 设计上也比较简单,利用的都是 Xcode 自身的功能,开发者在创建依赖时,相比 CocoaPods 也简单许多
(4)Carthage 管理的依赖只需编译一次,项目干净编译时,不会再去重新编译依赖。
(5)自动将第三方框架编程为 Dynamic framework( 动态库 )。
(6)Carthage 与 CocoaPods 无缝集成,一个项目能同时拥有 CocoaPods 和 Carthage。

Carthage 的缺点:
(1)仅支持 iOS8 +,不能用来针对 iOS 8 以前的系统版本进行开发
(2)支持的 Carthage 安装的第三方框架和依赖不如 CocoaPods 丰富
(3)无法在 Xcode 里定位到源码
(4)安装包的大小比用CocoaPods安装的包大

2. Carthage 安装
Carthage 的安装方法有三种:
(1)下载安装包安装,
(2)使用Homebrew安装:brew update ;brew install carthage。
(3)使用源码安装:clone 项目,进入项目根目录,执行 make install 命令即可。

3. Carthage 使用
(1)创建Cartfile 文件。

(2)编辑Cartfile 文件。

                例如:github "Alamofire/Alamofire"  ~> 4.0

  (3) 执行更新命令 $ Carthage update —platform iOS
  (4) 更新成功后,项目中会出现一个文件(Cartfile.resolved) 和 一个文件夹(Carhtage/) 




猜你喜欢

转载自blog.csdn.net/gulanggege/article/details/79440109