未分类

第一次使用Carthage记录

准备

$ brew update

update [–merge] [–force]: 使用git从GitHub获取最新版本的Homebrew和所有formula,并执行任何必要的迁移。

$ brew install carthage

install formula: 安装 formula

很慢,后来用科学上网后快很多。

$ carthage version

装好后查看版本

添加库

在你的项目根目录下创建一个名为Cartfile的文件,并添加要用的第三方库,比如使用Alamofire:

project/Cartfile:

1
github "Alamofire/Alamofire" ~> 4.7

$ carthage update

获取(fetch)并构建(build)您列出的每个框架。

执行命令后,Carthage 会拉取库文件进行编译,会在 project/Carthage/Build 目录下生成不同平台的Alamofire.framework文件。

Carthage 不像 Cocoapods 会自动帮你做好连接配置,需要手动添加,因为一个一个将*.framework文件添加到 Build Phases>Link Binary With Libaries 里很麻烦,

Link Binary With Libaries

所以这里推荐把相应库目录添加到 Build Settings>Framework Search Paths 里,比如我使用的是iOS版,那么添加一个:

1
$(PROJECT_DIR)/Carthage/Build/iOS

Framework Search Paths

(PROJECT_DIR)/Carthage/Build/iOS

上面设置是看别人博客进行配置的,但是一运行,就会报错:

1
2
3
dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire
Referenced from: /var/containers/Bundle/Application/xxx/SwiftDemo.app/SwiftDemo
Reason: image not found

后来查找了这个错误,发现添加库到 Framework Search Paths 里只是让import的时候不报错,但要保证运行的时候不报上面那个错还需要一步。

Alamofire.framework 添加到 General>Embedded binaries

Embedded binaries

最后就可以用官方例子试用一下了:

1
2
3
4
5
6
7
8
9
10
11
12
13
Alamofire.request("https://httpbin.org/get").responseJSON { response in
print("Request: \(String(describing: response.request))") // original url request
print("Response: \(String(describing: response.response))") // http url response
print("Result: \(response.result)") // response serialization result

if let json = response.result.value {
print("JSON: \(json)") // serialized json response
}

if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
print("Data: \(utf8Text)") // original server data as UTF8 string
}
}

References

声明:转载请注明作者及原文链接
分享到