iOS开发 之 依赖管理

目录

  • 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 ★★☆

更多文章, 请支持我的个人博客

你可能感兴趣的:(iOS开发 之 依赖管理)