由于项目需要pod,于是在本地执行sudo gem install cocoapods命令直接安装pod,结果安装了最新的1.5.0版本的pod,与项目中pod的版本差别太大,导致最终项目编译有问题,因此需要将pod降级,安装相应的1.3.1版本的pod。
前置说明:非常抱歉,最初将gem命令记成git命令了,经过小伙伴们的提醒,现已做了修改,很抱歉给大家带来的不便,也非常感谢各位小伙伴提供的帮助。
一:pod安装
cocopod git地址:https://github.com/CocoaPods/CocoaPods
cd到你想要的目录:我切到library(资源库)下面,执行git clone命令,将cocopod下下来
clone完成后,使用git tag,可以看到pod里有好多好多各种各样的tag
使用tag切换到你想要的版本下:git checkout tag号
执行cocopod的编译命令,在cocopod代码的根目录下,可以看到cocopods.gemspec:
gem build cocopods.gemspec
打包完成后,就可以看到这里多了一个类似:
cocoapods-1.4.0.gem
后面的数字是你的tag号
这就是编译后的cocopod了,接下来要进行安装,执行安装命令:
gem install cocoapods-1.4.0.gem --install-dir=~/Library/Cocoapod/cocoapods-1.4.0
提示,我将cocopod代码放到Cocoapod文件夹下,cocoapods-1.4.0是pod 1.4.0的安装
以此类推,无论你想安装什么版本的cocopod,都可以先将pod代码切换分支,然后编译,然后安装。
最后,想要使用安装后的某一指定版本的pod,还需要最后一步操作:添加配置
vim ~/.bash_profile
分别添加pod和gem的地址,如果后期想换一个已安装的pod版本,也只需要修改这里的配置就可以了。
具体配置内容:
# Cocoapods
export PATH=${PATH}:${HOME}/Library/Cocoapod/cocoapods-1.3.1/bin
export GEM_PATH=${GEM_PATH}:${HOME}/Library/Cocoapod/cocoapods-1.3.1
注意:只需要将这两行里面的cocoapods-1.3.1里的版本号(数字)替换成刚刚编译成功的版本号即可,路径和版本号一定要写对哈
修改完配置文件,别忘了执行source ~/.bash_profile,使修改的配置文件生效
二、pod卸载
一般来说,如果按照我上面的方式进行安装的话,如果要卸载某一版本pod,只需要把Cocoapod下的cocoapods-1.3.1文件夹删除,再修改配置文件即可(将配置文件里对cocoapods-1.3.1的配置删除或修改);如果要删除Cocoapod,同样只需要直接删除Cocoapod文件夹,再将配置文件里对cocopod的配置(pod和gem)删除即可,就可以删除所有版本的pod了。
但是如果你安装pod的时候,安装到了系统下,比如按照上面的方式进行安装的时候,gem install命令,没有写--install-dir地址,那么默认是安装到系统下的;再比如你用的sudo gem install cocoapods命令直接安装pod,那么也是安装到系统下的。
如果你安装到了系统下,那么你按照上述步骤安装的时候,一定会遇到冲突(错误或警告),请卸载系统的pod后,再进行上述的安装步骤。
卸载pod方法:
执行which pod,可以看到一个地址,这个地址就是安装的pod的地址,执行:
sudo rm -rf /usr/local/bin/pod
后面的地址就是执行which pod时看到的地址
接下来找cocopod的安装包的地址,执行:
gem list
可以看到好些文件,这些文件后面还跟着的括号里的数字是它的版本号,其中有好些库,就是这些库导致的冲突和错误,请分别一一删除(uninstall)这些库:
sudo gem uninstall cocoapods 0.39.0(注:后面的版本号要和列表中的版本号对应)
sudo gem uninstall cocoapods-deintegrate 0.39.0(注:后面的版本号要和列表中的版本号对应)
sudo gem uninstall cocoapods-core 0.39.0(注:后面的版本号要和列表中的版本号对应)
......
将下图中的所有这种cocoapods-xx的都uninstall掉(包括图中的cocoapods-1.3.1文件):
uninstall之后,就OK了。
接下来检查cocoapods是否删除,执行:pod
然后会看到提示:pod没找到之类的
这就说明,pod删除成功完成啦!