CocoaPods版本隔离 - ShenYj/ShenYj.github.io GitHub Wiki
-
在面对多人协作开发时, 设备间的环境可能会造成不必要的麻烦,比如
MacOS
自带的ruby
版本都不是最新的,可以使用rvm
或rbenv
来控制ruby
版本 -
iOS
日常开发中很多的工具都是Ruby
编写的, 比如:Bundler
,fastlane
,jazzy
,CocoaPods
这些
Ruby
工具或者依赖项,都是通过Ruby
包管理工具RubyGems
来安装管理的,在默认情况下Gems
总是下载最新版本, 多环境的版本不一致可能会产生一些问题 -
Bundler
是管理Gem
依赖的工具,可以隔离不同项目中Gem
的版本和依赖环境的差异,同时它也是一个Gem
Bundler
通过读取项目中的依赖描述文件Gemfile
,来确定各个Gems
的版本号或者范围,来提供了稳定的应用环境。当我们使用bundle install
它会生成Gemfile.lock
将当前librarys使用的具体版本号写入其中。之后,他人再通过bundle install
来安装 libaray 时则会读取Gemfile.lock
中的 librarys、版本信息等。RubyGems
是Ruby
的一个包管理工具,这里面管理着用Ruby
编写的工具或依赖我们称之为 Gem
-
在项目中初始化
bundle
环境,创建Gemfile
bundle init
-
在
Gemfile
中声明使用的CocoaPods
版本 (这里锁定了1.10.2
版本)source "https://rubygems.org" git_source(:github) { |repo_name| "https://github.com/#{repo_name}" } # gem "rails" source 'https://rubygems.org' # gem 'cocoapods', '~> 1.10.2'
执行
bundle install
开始安装后, 生成Gemfile.lock
文件 -
编辑
Podfile
后, 开始安装依赖库bundle exec pod install
等待依赖安装成功后
-
通过项目下的
Podfile.lock
文件可见当前使用CocoaPods
版本为:COCOAPODS: 1.10.2
-
而本机环境中
❯ pod --version 1.11.2
-
这样我们就可以轻松统一CocoaPods
环境了
CocoaPods
其实是 iOS 版的 RubyGems + Bundler
组合
-
Bundler
依据项目中的Gemfile
文件来管理Gem
- 而
CocoaPods
通过Podfile
来管理Pod