目录
-
CocoaPods
安装
创建PodFile
编辑PodFile
依赖
其他
-
Carthage
安装
创建Cartfile
依赖
导入Framework
其他
-
其他方案
Swift-Package-Manager
CocoaSeeds
小结
CocoaPods
简介
CocoaPods应该是iOS最常用最有名的类库管理工具了, 它的文档和资源也是最全面的
安装
brew install cocoapods
创建PodFile
除了手动创建PodFile之外, 还可以自动生成PodFile文件
pod init
PodFile文件需要和工程文件(CocoaPodsDemo.xcodeproj)在同一级目录下
PodFile文件初始内容如下
# Uncomment this line to define a global platform for your project
# platform :ios, '8.0'
# Uncomment this line if you're using Swift
# use_frameworks!
target 'CocoaPodsDemo' do
end
target 'CocoaPodsDemoTests' do
end
target 'CocoaPodsDemoUITests' do
end
编辑PodFile
这里我们参考的是AFNetworking的配置
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'AFNetworking', '~> 3.0'
接着再添加一个Swift网络库Alamofire
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'AFNetworking', '~> 3.0'
target 'CocoaPodsDemo' do
use_frameworks!
pod 'Alamofire', '~> 3.4'
end
依赖
如果网络状况比较"良好"的话, 这样安装依赖
pod install
上述命令一直卡住不动的话, 也可以这样安装
pod install --verbose --no-repo-update
安装依赖成功后, 打开CocoaPods为我们生成的CocoaPodsDemo.xcworkspace文件即可
其他
对于PodFile中的版本配置, 官方说明如下
'> 0.1' Any version higher than 0.1
'>= 0.1' Version 0.1 and any higher version
'< 0.1' Any version lower than 0.1
'<= 0.1' Version 0.1 and any lower version
'~> 0.1.2' Version 0.1.2 and the versions up to 0.2, not including 0.2 and higher
'~> 0.1' Version 0.1 and the versions up to 1.0, not including 1.0 and higher
'~> 0' Version 0 and higher, this is basically the same as not having it
完整Demo请参考这里的CocoaPodsDemo
Carthage
有了如此百科全书版强大的CocoaPods为什么还会有Carthage呢
Carthage的目标是为了解决CocoaPods的以下两个痛点
集中式管理
修改工程文件
安装
brew install carthage
创建Cartfile
这里还是举AFNetworking和Alamofire的例子
github "AFNetworking/AFNetworking" ~> 3.0
github "Alamofire/Alamofire" ~> 3.4
Cartfile文件最好和工程文件(CocoaPodsDemo.xcodeproj)在同一级目录下, 否则配置会和下面的例子不同
依赖
carthage update --platform iOS
导入Framework
将Carthage/Build下的Framework文件导入到工程的Linked Frameworks and Libraries
然后在工程的Build Phases中添加如下的Run Script
/usr/local/bin/carthage copy-frameworks
接着在Input Files中添加
$(SRCROOT)/Carthage/Build/iOS/AFNetworking.framework
$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
其他
对于Cartfile中的版本配置, 官方说明如下
'>= 1.0' for at least version 1.0
'~> 1.0' for compatible with version 1.0
'== 1.0' for “exactly version 1.0
'some-branch-or-tag-or-commit' for a specific Git object (anything allowed by git rev-parse)
完整Demo请参考这里的CarthageDemo
其他方案
Swift Package Manager
或许是Apple也意识到没有包管理器的问题严重性吧, 对于开源的Swift还"赠送"了
Swift Package Manager
由于本人暂时还没切换到Swift开发(额, 没错, 就是这么侉), 所以对于SPM也不是特别熟悉
有兴趣的可以参考官方教程
如果你了解Swift Package Manager的话, 欢迎留言和补充, 谢谢
CocoaSeeds
CocoaSeeds是一个"棒子"出品的项目, 作者的思路是这样的
CocoaSeeds just downloads the source code and add it to your Xcode project. No static libraries, no dynamic frameworks.
除此以外他还有其他的特点
支持iOS7项目
Git Submodule sucks
It can be used with CocoaPods and Carthage
通过下面的例子我们来亲身感受下CocoaSeeds
- 安装CocoaSeeds
gem install cocoaseeds
- 创建Seedfile
github "AFNetworking/AFNetworking", "3.0"
target :CocoaSeedsDemo do
github "Alamofire/Alamofire", "3.4", :files => "Source/*.{swift,h}"
end
- 依赖
seed install
遗憾的是, 这个项目项目fork数不多, 对一些第三方库的支持也没有CocoaPods和Carthage那么完善
完整Demo请参考这里的CocoaSeedsDemo
小结
CocoaPods | Carthage | Swift Package Manager | CocoaSeeds | |
---|---|---|---|---|
特点 | 集中式管理 | 分布式管理 | N/A | 分布式管理 |
修改工程文件 | 不修改工程文件 | N/A | 不修改工程文件 | |
N/A | 下载并添加源码到工程 | |||
约束 | use_frameworks!只支持iOS8.0及以上 | 只支持iOS8.0及以上 | N/A | 支持iOS7.0及以上 |
需要将framework文件添加到工程 | N/A | |||
资源 | ★★★★★ | ★★★★ | N/A | ★★☆ |
评价 | ★★★★☆ | ★★★★ | N/A | ★★☆ |
更多文章, 请支持我的个人博客