深入理解代替单纯记忆
gem是一个软件库,提供了像Cocoapods
、Fastlane
等常用软件
Bundler就是gem提供的一个用于统一gem软件版本的工具
作为iOS开发,对Podfile
和Podfile.lock
肯定是有些了解的。其实Bundler
也是基于同样的思想,而且Podfile
的思路其实是有借鉴Bundler
的
Bundler
需要两个文件的支持,分别是Gemfile
和Gemfile.lock
Gemfile
中用于指定所使用的的gem软件的版本信息和软件下载源Gemfile.lock
则用于锁定当前使用的软件版本信息,需要提交到代码仓库,用于不同开发者不同电脑上使用gem软件对项目工程操作时进行统一版本协同
iOS项目A,需要使用1.5.0版本的Cocoapods进行库依赖管理,但开发者a电脑上用的1.4.3的Cocoapods,而开发者b电脑上用的是高版本1.8.0的Cocoapods
不同版本的Cocoapods在执行依赖安装或更新时,很容易出现冲突情况。最好的版本肯定是大家统一Cocoapods版本。但Bundler
则给了更好的解决方案
我们新创建一个Gemfile
文件,写入
source 'https://rubygems.org' do
gem 'cocoapods', '1.5.0'
end
然后执行bundle install
,bundler
会根据Gemfile
内容创建Gemfile.lock
文件,此文件要放入git等版本控制中;同时会下载安装Gemfile
中指定版本的软件
最后执行bundle exec pod install
命令,bundler
会检查按需下载安装相应版本的Cocoapods
并进行pod install
操作
官方建议最好用
bundle exec xx xx
形式,虽然有时候直接pod install
也可以work,但在不同机器不同环境下直接执行pod install
是没办法保证Cocoapods
版本的