有了 CocoaPods则无需再通过拖 第三方库及第三方库所依赖的 framework静态库到项目中等麻烦的操作,仅仅只需要通过终端(Terminal)输入一些指令即可完成这些操作;而且涉及到第三方库的更新升级也可以通过 CocoaPods进行手动管理更新。
Homebrew 官网
Rvm 官网
Rvm 安装指南
Ruby 官网
CocoaPods 官网
Ruby 镜像
Homebrew是一个软件包管理器,用于在mac上安装一些os x上没有的UNiX工具;类似于360软件管理器。
Rvm全称 Ruby Version Manager,是安装和管理 ruby 的一种工具。
摘录:RVM is a command-line tool which allows you to easily install, manage, and work with multiple ruby environments from interpreters to sets of gems.
Ruby是一种面向对象的脚本语言,简单易用,功能强大。能跨平台和可移植性好等等。其实就是种脚本语言。
Ruby的软件源使用的是亚马逊的云服务,国内网络环境下载时可能会出现各种不稳定和超时,所以自带的需要FQ,可以将官方 ruby 源 替换成国内 China ruby 源。2016.06 淘宝源暂停维护了。
CocoaPods是 iOS 最常用的第三方类库管理工具,绝大部分有名的开源类库都支持 CocoaPods。
CocoaPods是用 ruby 实现的,要想使用它首先需要有 ruby 的环境。幸运的是OS X系统默认已经可以运行 ruby 了。但是有时候 ruby 版本过低是无法正常支持 CocoaPods 的使用,所以需要先安装更新升级 rvm 和 ruby。
rvm -v
curl -L get.rvm.io | bash -s stable 或者 curl -L https://get.rvm.io | bash -s stable
source ~/.bashrc
source ~/.bash_profile
rvm implode 或者 rm -rf ~/.rvm
使用 ruby 原因:
虽然 macOS 自带了一个 ruby 环境,但是是系统自己使用的,所以权限很小,只有系统能用;~/Library 目录是 root 管理者权限,所以很多会提示无权限。使用自带 Ruby 更新,管理不方便,一系列无原因的报错,因此推荐另外安装一个 ruby 环境。
删除系统 ruby 方法[删除容易出现问题,不要删除]
这里只是单纯的介绍下,系统 ruby 的相关内容,在安装 Cocoapods 时,并不需要对系统 ruby 做而外操作,请忽略该内容。
cd /System/Library/Frameworks/Ruby.framework/Versions
sudo rm /System/Library/Frameworks/Ruby.framework/Versions/Current
sudo ln -s 2.6 /System/Library/Frameworks/Ruby.framework/Versions/Current
在安装 Cocoapods 时,后面的内容才是我们需要注意的地方。
ruby -v
rvm list
rvm list known
rvm install x.x.x
(安装时,可能会遇到错误,大部分是因为没有安装Homebrew造成,所以要提前安装Homebrew比较好)
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
rvm use x.x.x --default(曾经删除了的 ruby,
ruby -v
竟然还输出默认值,没事别尝试)
which ruby
rvm uninstall x.x.x 或者 rvm remove x.x.x
如果出现类似错误:
Error running '__rvm_rm_rf /Users/xxx/.rvm/rubies/ruby-2.6.9-preview2',
please read /Users/xxx/.rvm/log/1538210544_ruby-2.6.0-preview2/remove.rubies.log
可以使用 remove 命令:
sudo rvm remove 2.6.0,完全移除。
或者 sudo rm -rf ”ruby 安装的路径地址“ (暴力删除,直接将 ruby 文件干掉)
gem -v
gem sources -l
gem update --system
如果出现类似错误:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/3.0.1 directory.
可以使用:
sudo gem update --system
pods安装的前提是先要安装好上述三种环境。
gem sources -l
gem sources --add https://gems.ruby-china.com/
gem sources --remove https://gems.ruby-china.org/
https://gems.ruby-china.org/
该镜像源已被弃用,请使用 https://gems.ruby-china.com/
which pod
sudo gem install cocoapods
如果出现类似错误:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/bin directory.
可以使用:
sudo gem install -n /usr/local/bin cocoapods
如果安装了多个Xcode使用下面的命令选择(一般需要选择最近的Xcode版本)
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
sudo gem uninstall cocoapods
或者 sudo rm -rf ”cocoapods 安装的路径地址“ (暴力删除,直接将 ruby 文件干掉,别轻易尝试)
方式一:
pod setup
为什么要执行pod setup?
所有的项目的 Podspec 文件都托管在https://github.com/CocoaPods/Specs。第一次执行 pod setup 时,CocoaPods 会将这些 podspec 索引文件更新到本地的~/.cocoapods/目录下,这个索引文件比较大,主要是这网有堵墙在那,咋个也快不起来呀?
pod setup
超级慢咋办? 贴一下网上:解决方案
方式二:
/// A.,直接从官方进行下载安装
git clone https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/trunk
/// B.国内的镜像地址,速度快准稳
git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git ~/.cocoapods/repos/trunk
pod repo update
pod --version
pod search xxx
pod init // init 之后,项目中就会存在 cocoapods 的依赖环境
# 指定的 workspace,可选
workspace 'MyWorkspace'
# 指定的 project,可选
project 'Myxcodeproj'
# 不指定会默认,可配置镜像源、私有源
source 'https://github.com/CocoaPods/Specs.git'
# 支持的平台和版本
platform :ios, '9.0'
# 可忽略引用库的所有警告
inhibit_all_warnings!
# 抽象的 Target 用于多个 Target
abstract_target 'Shows' do
# 尽可能不使用 动态库
#use_frameworks!
# 添加需要的 Pod
pod 'testPod'
# 添加指定版本的 Pod
#'> 0.1'任何高于 0.1 的版本
#'>= 0.1'0.1 版及更高版本
#'< 0.1'任何低于 0.1 的版本
#'<= 0.1'版本 0.1 和任何更低版本
pod 'testVersion','1.1.0'
# 添加指定 configutartion 的 Pod
pod 'testConfigutartion',:configutartions =>['Debug']
# 添加从指定Git仓库下载指定 Tag 的Pod
pod 'testGitSource',:git=>'https://github.com/test/testGitSource.git',:tag=> '1.0.0'
# 添加指定本地路径的 Pod
pod 'testLocal', :path => '../code/Pods/'
# 针对多Target项目的书写方法
# Has its own copy of ShowsKit + ShowWebAuth
target 'ShowsiOS' do
# 可以在这里单独添加该Target单独使用的开源框架
pod 'ShowWebAuth'
end
# Has its own copy of ShowsKit + ShowTVAuth
target 'ShowsTV' do
# 可以在这里单独添加该Target单独使用的开源框架
pod 'ShowTVAuth'
end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' # 最低适配iOS 12.0, 这里设置第三方适配最低版本,避免部分警告出现
end
end
end
编辑 Podfile 该内容摘自原文
pod search AFNetWorking
pod install
pod update
pod outdated
当我们在从 github 上,下载一些 Demo 时,运行总会因为 pod 的某些问题,而导致运行失败,或者你觉得 CocoaPods让你的项目出现了问题,非常的搞心态,想将其从项目中彻底移除,可以试试下面的方式:
利用终端删除项目中 CocoaPods 依赖
0、删除之前,应确保已备份项目!
1、sudo gem install cocoapods-deintegrate cocoapods-clean // 同时安装cocoapods-deintegrate 和 cocoapods-clean 插件
2、先 cd 到想要删除的工程目录下,再打开终端输,最后输入一下命令
3、pod deintegrate // 删除项目中 CocoaPods
4、pod clean 或者 pod cache clean --all // 清除项目 CocoaPods 缓存,目的是为了删除 pod 的一些衍生文件/数据。如果清洁完还有 pod 残留,手动删除好了。
5、rm Podfile (可选,可以接着使用,也可以重新pod init
一份)
cocoapods-deintegrate 插件
不用上面方式,手动直接删? 没试过,不知道行不行,贴下试过小伙伴的文章:在项目中移除CocoaPods
cocoapods-deintegrate 插件 该内容摘自原文
$ ruby -v # 查看ruby 版本
$ rvm list known # 列出已知的 ruby 版本
$ rvm install x.x.x # 选择指定 ruby 版本进行更新
$ rvm get stable # 更新 rvm
$ rvm use x.x.x # 切换到指定 ruby 版本
$ rvm use x.x.x --default # 设置指定 ruby 版本为默认版本
$ rvm list # 查询已安装的 ruby 版本
$ rvm remove x.x.x # 卸载移除 指定 ruby 版本
$ curl -L https://get.rvm.io | bash -s stable # 安装 rvm 环境
$ curl -sSL https://get.rvm.io | bash -s stable --ruby # 默认安装 rvm 最新版本
$ curl -sSL https://get.rvm.io | bash -s stable --ruby=3.0.0 # 安装 rvm 指定版本
$ source ~/.rvm/scripts/rvm # 载入 rvm
$ gem -v # 查看 gem 版本
$ gem source # 查看 gem 配置源
$ gem source -l # 查看 gem 配置源目录
$ gem sources -a url # 添加 gem 配置源(url 需换成网址)
$ gem sources --add url # 添加 gem 配置源(url 需换成网址)
$ gem sources -r url # 删除 gem 配置源(url 需换成网址)
$ gem sources --remove url # 删除 gem 配置源(url 需换成网址)
$ gem update # 更新 所有包
$ gem update --system # 更新 Ruby Gems 软件
$ gem install rake # 安装 rake,从本地或远程服务器
$ gem install rake --remote # 安装 rake,从远程服务器
$ gem install watir -v 1.6.2 # 安装 指定版本的 watir
$ gem install watir --version 1.6.2 # 安装 指定版本的 watir
$ gem uninstall rake # 卸载 rake 包
$ gem list d # 列出 本地以 d 打头的包
$ gem query -n ''[0-9]'' --local # 查找 本地含有数字的包
$ gem search log --both # 查找 从本地和远程服务器上查找含有 log 字符串的包
$ gem search log --remoter # 查找 只从远程服务器上查找含有 log 字符串的包
$ gem search -r log # 查找 只从远程服务器上查找含有log字符串的包
$ gem help # 提醒式的帮助
$ gem help install # 列出 install 命令 帮助
$ gem help examples # 列出 gem 命令使用一些例子
$ gem build rake.gemspec # 把 rake.gemspec 编译成 rake.gem
$ gem check -v pkg/rake-0.4.0.gem # 检测 rake 是否有效
$ gem cleanup # 清除 所有包旧版本,保留最新版本
$ gem contents rake # 显示 rake 包中所包含的文件
$ gem dependency rails -v 0.10.1 # 列出 与 rails 相互依赖的包
$ gem environment # 查看 gem 的环境
$ gem list --local | grep cocoapods # 查看本地安装过的cocopods相关东西
$ sudo gem -v # 查看 gem 版本(以管理员权限)
$ sudo gem install cocoapods # 安装 CocoaPods(以管理员权限)
$ sudo gem install cocoapods --pre # 安装 CocoaPods 至预览版(以管理员权限)
$ sudo gem update cocoapods # 更新 CocoaPods 至最新版(以管理员权限)
$ sudo gem update cocoapods --pre # 更新 CocoaPods 至预览版(以管理员权限)
$ sudo gem uninstall cocoapods -v 0.39.0 # 移除 CocoaPods 指定版本(以管理员权限)
$ --verbose # 可以显示详细的检测过程,出错时会显示详细的错误信息
$ --repo-update # 不忽略本地库的更新
$ --no-repo-update # 忽略本地库的更新,执行效率更快
$ 以上三个可以在 pod 的时候组合使用
$ pod setup # CocoaPods 将信息下载到~/.cocoapods/repos 目录下。如果安装 CocoaPods 时不执行此命令,在初次执行 pod intall 命令时,系统也会自动执行该指令
$ pod --version # 检查 CocoaPods 是否安装成功及其版本号
$ pod init # 创建 Podfile 文件
$ pod search AFNetworking # 搜索 AFNetworking 第三方库
$ pod install # 安装第三方库,默认会更新本地库
$ pod update # 更新所有可更新的三方库,默认会更新本地库
$ pod update AFNetworking # 只更新AFNetworking,其他第三方库不会更新
$ pod deintegrate # 删除项目中的 CocoaPods,
$ pod clean # 清理项目中的 CocoaPods 缓存,
$ pod install --no-repo-update # 忽略本地库更新,安装第三方库
$ pod install --verbose --no-repo-update # 显示详细的检测过程,出错时会显示详细的错误信息;忽略本地库更新,安装第三方库
$ pod update --no-repo-update # 忽略本地库更新,更新第三方库 建议 pod update 的时候太慢的时候使用
$ pod update --verbose --no-repo-update # 显示详细的检测过程,忽略本地库更新,更新第三方库。
$ pod repo update # 更新本地库repo
$ pod repo remove master # 移除本地 master
$ sudo rm -fr ~/.cocoapods/repos/master # 移除本地 master
$ sudo rm -fr ~/Library/Caches/CocoaPods/ # 移除本地缓存
$ pod repo remove trunk # 移除trunk
$ sudo rm -fr ~/.cocoapods/repos/trunk # 移除本地 trunk
$ pod repo list # 确认是否已移除 trunk