Skip to content

Latest commit

 

History

History
41 lines (24 loc) · 1.84 KB

Gemfile in iOS.md

File metadata and controls

41 lines (24 loc) · 1.84 KB

Bundler in iOS project浅析

深入理解代替单纯记忆

前置知识

gem是一个软件库,提供了像CocoapodsFastlane等常用软件

Bundler就是gem提供的一个用于统一gem软件版本的工具

Bundler工作原理

作为iOS开发,对PodfilePodfile.lock肯定是有些了解的。其实Bundler也是基于同样的思想,而且Podfile的思路其实是有借鉴Bundler

Bundler需要两个文件的支持,分别是GemfileGemfile.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 installbundler会根据Gemfile内容创建Gemfile.lock文件,此文件要放入git等版本控制中;同时会下载安装Gemfile中指定版本的软件

最后执行bundle exec pod install命令,bundler会检查按需下载安装相应版本的Cocoapods并进行pod install操作

官方建议最好用bundle exec xx xx形式,虽然有时候直接pod install也可以work,但在不同机器不同环境下直接执行pod install是没办法保证Cocoapods版本的

参考