Cocoapods将Rails的Gem思想成功的迁移到了OSX中,让iOS和MacOS也能快速的管理第三方依赖。
然而,用久了发现一个很尴尬的问题——Cocoapods还不是很完善,因此更新频率很大,虽然我经常更新,但是他对旧版本的Cocoapods兼容性并不好。
例如,我有一个项目是用0.16版本的Cocoapods开发的,过了一段时间,需要对这个项目进行更新,在运行pod install
时会出现各种问题,原因是我用新版本的pod来安装旧版本的podfile.lock
,虽然官方也尽量在兼容旧版本,但不可避免还是会出现各种问题,例如——用法过期并移除……
这时候想到,进行Rails开发中,用Bundle进行Gem管理,而Cocoapods本身就是一个Gem,那能不能用Bundle来管理Cocoapods呢?
我们先试着在项目根目录下,创建Gemfile文件:
Gemfile
1
| gem 'cocoapods', '~> 0.16.0'
|
执行bundle install
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| $ bundle install
Fetching source index from http://ruby.taobao.org/
Resolving dependencies...
Using rake (10.0.4)
Using i18n (0.6.1)
Using multi_json (1.7.3)
Using activesupport (3.2.13)
Using addressable (2.3.4)
Using colored (1.2)
Using escape (0.0.4)
Using multipart-post (1.2.0)
Using faraday (0.8.7)
Using json (1.7.7)
Using faraday_middleware (0.9.0)
Using hashie (2.0.5)
Using netrc (0.7.7)
Using octokit (1.24.0)
Using open4 (1.3.0)
Using xcodeproj (0.5.5)
Installing cocoapods (0.16.4)
Using bundler (1.3.5)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
|
用gem list
看看本地有哪几个版本cocoapods:
1
2
3
4
5
| $ gem list cocoapods
*** LOCAL GEMS ***
cocoapods (0.19.1, 0.16.4)
|
现在试试能否用旧版本的cocoapods:
1
2
| $ pod --version
0.16.4
|
退出项目文件夹,去其他文件夹试试会不会自动切换到新版本:
1
2
3
| $ cd ..
$ pod --version
0.19.1
|
成功!
发现有人直接用pod --version
没效果,可能是他不是使用最新版本的RVM,则需要手动调用bundle:
1
2
| $ bundle exec pod --version
0.16.1
|