移动开发

如何在本地安装多个版本的 CocoaPods

2017-04-13  本文已影响1004人  公爵海恩庭斯

修订历史

Version Date Description
1.0 2017.4.3 Init

问题

问题的原因在于,有两个项目需要同步开发,其中老项目使用 0.39 版本的 CocoaPods,而新项目需要使用 1.0 以上版本的 CocoaPods。

解决方案

1. 升级 CocoaPods

因为本地安装的是 0.39,需要先升级:
$ sudo gem install cocoapods
$ pod setup

关于如何安装 CocoaPods,参考 用CocoaPods做iOS程序的依赖管理

安装成功:

➜  LightningMain git:(master) ✗ pod --version
1.2.1
➜  LightningMain git:(master) ✗

查看本地安装的 CocoaPods 版本列表:

➜  WeiboMain:note git:(dev_771) ✗ gem list cocoapods

*** LOCAL GEMS ***

cocoapods (1.2.1, 1.1.1, 0.39.0)
cocoapods-core (1.2.1, 1.1.1, 0.39.0)
cocoapods-deintegrate (1.0.1)
cocoapods-downloader (1.1.3, 0.9.3)
cocoapods-plugins (1.0.0, 0.4.2)
cocoapods-search (1.0.0, 0.1.0)
cocoapods-stats (1.0.0, 0.6.2)
cocoapods-trunk (1.2.0, 0.6.4)
cocoapods-try (1.1.0, 0.5.1)
➜  WeiboMain:note git:(dev_771) ✗

2. 安装 CocoaPods 0.39

CocoaPods 其实并不是覆盖安装,除非你显式的删除:

gem uninstall cocoapods

因为我之前执行过上一步,所以我还需要重新安装 CocoaPods 0.39:

sudo gem install cocoapods -v 0.39

安装成功:

➜  ~ pod --version
1.2.1
➜  ~ pod _0.39.0_ --version
0.39.0

安装后可以通过以下命令指定 CocoaPods 的版本:

pod _0.39.0_ install

参考 Install multiple version of cocoa pods

3. 修改 CocoaPods 默认版本

到目前为止,CocoaPods 的默认版本是最新的 1.2.1,而老项目中写了很多脚本,所以我需要将默认的 CocoaPods 改为 0.39。

➜  ~ which pod
/Users/waterforest/.rvm/rubies/ruby-2.2.4/bin/pod
➜  ~ subl /Users/waterforest/.rvm/rubies/ruby-2.2.4/bin/pod

修改前:

require 'rubygems'

version = ">= 0"

if ARGV.first
  str = ARGV.first
  str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
  if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
    version = $1
    ARGV.shift
  end
end

gem 'cocoapods', version
load Gem.bin_path('cocoapods', 'pod', version)

修改后:

require 'rubygems'

version = "0.39"

if ARGV.first
  str = ARGV.first
  str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
  if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
    version = $1
    ARGV.shift
  end
end

gem 'cocoapods', version
load Gem.bin_path('cocoapods', 'pod', version)

修改成功:

➜  ~ pod --version
0.39.0
➜  ~ pod _1.2.1_ --version
1.2.1
➜  ~

在这个方案之前,我还使用过 alias 的方式,但是 alias 这个方案有两点问题:

  1. 默认的 pod alias 成了 pod _0.39.0_ 之后,无法使用 pod _1.2.1_ 来指定版本了,这意味着每一个版本都需要一个 alias
  2. 如果你写了大量的脚本,这些脚本在执行的时候并不会做 source ~/.bash_profile 或者 source ~/.zshrc 这样的默认操作
上一篇 下一篇

猜你喜欢

热点阅读