当前位置: > > > Swift - 使用Carthage来安装管理第三方库

Swift - 使用Carthage来安装管理第三方库

之前我介绍了如何使用 CocoaPods 来管理第三方库(Swift - CocoaPods的安装使用详解),本文介绍另一个第三方库管理工具:Carthage

1,Carthage介绍
相较于 CocoaPods 的悠久历史,Carthage 还比较年轻,出现也没几年(自 Swift 语言出来后才有的)。它的目标是用最简单的方式来将第三方框架(frameworks)添加到我们项目中来。
GitHub 主页地址:https://github.com/Carthage/Carthage.git

2,Carthage与CocoaPods的区别
(1)使用 CocoaPods 我们只需要修改 Podfile 文件,CocoaPods 会直接创建和修改项目的 workspace 配置。也就是说 CocoaPods 创建的是高度集成的项目。
Carthage 的特点是灵活,耦合度不高,使用时不需要集成相应的 project,也不会创建新的 workspace。仅仅需要依赖打包好的 framework 文件即可。

(2)虽然CocoaPods 功能更加强大,但因为国内网络问题,很多库更新不下来(所以前文里,我将其改用淘宝提供的镜像源),或者更新了又用不了,或是打包时出现各种问题。
Carthage 只需要从 github 上下载项目即可,配置简单,使用的第三方库的时候就像使用苹果原生的 framework 一样,干净简洁。

3,安装Carthage
(1)在“终端”中运行如下命令更新 homebrew
brew update

(2)安装 Carthage
brew install carthage

(3)安装完毕后执行 carthage version 命令可查看版本。

4,Carthage的使用
(1)首先进入到工程的根目录下,创建空白的 Cartfile 文件。
cd /Users/hangge/Documents/Code/hangge_1359
touch Cartfile

(2)打开 Cartfile 文件,写入如下内容。(这里还是以使用 AlamofireSwiftyJSON 这两个库为例)
github "Alamofire/Alamofire" ~> 3.0
github "SwiftyJSON/SwiftyJSON"

(3)保存并关闭 Cartfile 文件,执行如下命令。
carthage update --platform iOS
这时 Carthage 就会自动为我们下载和编译所需要的第三方库。

(4)命令执行完毕后,在项目文件夹中会创建一个名为 Carthage 的文件夹。

(5)而在 Carthage/Build/iOS 文件夹下就是刚创建好的 framework 文件。

(6)打开我们的工程项目,将上面的两个 framework 拖到 General -> Linked Frameworks and Libraries 中来。

(7)点击配置页的 Build Phases 标签坐上角的加号,添加一个 Run Script

(8)将新增的 Run Script 做如下修改:
Shell 下方文本区域输入:/usr/local/bin/carthage copy-frameworks
input Files 中添加需要导入的库:
$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
$(SRCROOT)/Carthage/Build/iOS/SwiftyJSON.framework

(9)最后开发时,我们只需要在使用的时候 import 一下需要的库就可以了。
import UIKit
import Alamofire

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        Alamofire.request(.GET, "http://www.hangge.com")
            .responseString { response in
                print("Success: \(response.result.isSuccess)")
                print("Response String: \(response.result.value)")
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

5,修改或更新第三方组件库
(1)如果我们项目引用的库没有改变,只是想要将这些库更新到最新版本,则执行 update 命令即可。
carthage update --platform iOS

(2)如果要新增第三方库,或是删除原有的库。我们先编辑修改 Cartfile 文件。再执行执行 update 命令。
carthage update --platform iOS
最后打开项目,修改 General -> Linked Frameworks and Libraries 中的库引用。 以及 Run Script 中的 input Files 里相关内容即可。 
评论1
  • 1楼
    2017-12-04 17:30
    coder

    还是觉得 cocoapods 省事,因为Carthage 下载完之后还是要配置好多东西

    站长回复

    这个看个人喜好吧。cocoapods 集成度更高,也更省心。而有些人喜欢手动配置这些第三方库,这样 workspace 会更干净,那么使用 Carthage 就会很方便。