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的版本和依赖环境的差异,同时它也是一个GemBundler通过读取项目中的依赖描述文件Gemfile,来确定各个Gems的版本号或者范围,来提供了稳定的应用环境。当我们使用bundle install它会生成Gemfile.lock将当前librarys使用的具体版本号写入其中。之后,他人再通过bundle install来安装 libaray 时则会读取Gemfile.lock中的 librarys、版本信息等。RubyGems是Ruby的一个包管理工具,这里面管理着用Ruby编写的工具或依赖我们称之为 Gem
-
在项目中初始化
bundle环境,创建Gemfilebundle 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