CocoPods干货及Ruby相关工具扫货

使用CocoPods很久了,这次抽时间总结一波,因为CocoPods基于Ruby实现,所以顺便将Ruby系垃圾桶工具扫了一遍了解一下,以后如果学习ruby再逐个仔细研究,话不多说。

Ruby

Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言。

  • 查看Ruby版本
wansdeMacBook-Pro:~ wans$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]

RVM

RVM 全称Ruby Version Manager,Ruby 版本管理器,可以安装多个Ruby版本,并且可以在多个版本之间切换。

  • 查看RVM版本
wansdeMacBook-Pro:~ wans$ rvm -v
rvm 1.29.3 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]
  • 安装RVM
curl -L https://get.rvm.io | bash -s stable
  • 列出Ruby可安装的版本信息
rvm list known
  • 安装一个Ruby版本
rvm install 2.4
  • 设置Ruby的默认版本
rvm use 2.4 --default
  • 查看已安装的Ruby版本列表
rvm list
  • 卸载一个已安装的ruby版本
rvm remove 2.4

RubyGems

RubyGems是一个Ruby程序包管理器,无需安装,最新的Ruby里已经包含RubyGems。

gem是指封装起来的Ruby引用程序或者代码库,终端里使用的gem命令,是指通过RubyGems管理gem包。

  • 更新RubyGems版本
sudo gem update --system

# Mac OSX 10.11之后
sudo gem update -n /usr/local/bin —system
  • 查看gem已有的源
wansdeMacBook-Pro:~ wans$ gem source
*** CURRENT SOURCES ***

https://gems.ruby-china.org/
  • 切换gem源
# 删除已有源
gem sources -r https://rubygems.org/

# 添加新的源
gem sources -a https://gems.ruby-china.org/

# 由于官方源http://rubygems.org/ 国内被墙,需要切换到国内源。

# 腾讯源
https://gems.ruby-china.org/

# 淘宝源,升级mac ox 11.13.1后显示证书过期,现已切换到腾讯源可用。
http://ruby.taobao.org/

  • gem常用命令
# 从Gem源安装gem包
gem install [gemname]

# 安装指定版本的gem包
$ gem install [gemname] --version=[ver]

# 更新所有已安装的gem包
$ gem update

# 更新指定的gem包
# 注意:gem update [gemname]不会升级旧版本的包,此时你可以使用 gem install [gemname] --version=[ver]代替
$ gem update [gemname]

# 删除指定的gem包,注意此命令将删除所有已安装的版本
$ gem uninstall [gemname]

# 删除某指定版本gem
$ gem uninstall [gemname] --version=[ver]

# 查看本机已安装的所有gem包
$ gem list [--local]

Gemfile

定义第三方包依赖包配置工具,Ruby项目的信赖包都在Gemfile中进行配置。类似CocoaPods中的podfile文件

Bundle

管理项目中所有的gem第三方依赖包,类似CocoaPods.

CocoaPods

ios第三方代码库依赖管理工具。

  • 安装CocoaPods
$ sudo gem install cocoapods

# mac osx 10.11 之后
$ sudo gem install -n /usr/local/bin cocoapods --pre //安装最新版本
$ sudo gem install -n /usr/local/bin cocoapods -v  //安装指定的 version

  • 查看当前CocoaPods版本
$ pod --version
  • 查看安装的所有CocoaPods源列表
$ pod repo list
  • 初始化CocoaPods环境
$ pod setup # 初始化,可能会耗费很长时间,请耐心等待
  • CocoaPods常用命令
# 查看系统版本
$ pod --version

# 在当前项目创建一个podfile文件
$ pod init

# 搜索第三方库
$ pod search BFDisplayEvent

# 安装podfile里配置的第三方库,第三方库软件版本受Podfile.lock控制。
$ pod install

# 更新podfile里配置的版本没写死的第三方库,不受Podfile.lock控制,最后会更新Podfile.lock文件。
$ pod update
$ pod update BFDisplayEvent # 更新指定的第三方库

# 不搜索最新版本,只安装/更新本地版本,前提你本地已经有缓存。
$ pod install/update --no-repo-update
# 删除第三方库缓存
$ pod cache clean BFDisplayEvent

# 列举比podfile.lock里更新的版本的库
$ pod outdated

# 更新源里所有库的版本信息
$ pod repo update
# 更新源里指定库的版本信息(貌似并没有什么卵用)
$ pod repo [repo_name]/[lib_name]
  • CocoaPods组件化
# 1.创建一个pod子组件
$ pod lib create NAME

# 2.验证子组件语法
$ pod lib lint
$ pod lib lint [podspec_name].podspe

# 3.注册信息到trunk服务器
$ pod trunk register email 'username' # 注册trunk服务器
$ pod trunk me # 查看已注册的注册trunk信息

# 4.push到官方源trunk服务器
$ pod trunk push
$ pod trunk push [podspec_name].podspe # 推送到远程

# 5.push到私有源,specs_name是私有源名称
$ pod repo push [specs_name] [podspec_name].podspe # 推送到远程


常用的可带参数
# --allow-warnings : 允许 警告,有一些警告是代码自身带的。
# --use-libraries  : 私有库、静态库引用的时候加上
# —verbose: 显示命令执行的详情
# --sources: 在发布的私有库中,使用其他的私有库,可以使用多个源,用逗号隔开。

举个栗子
publicSpecs="https://github.com/CocoaPods/Specs.git" #官方源
privateSpecs="http://XXX/iOSPod.git" # 私有源
podspecName = "test"
$ pod lib lint  $podspecName.podspec --allow-warnings --use-libraries --skip-import-validation --verbose --sources=$privateSpecs,$publicSpecs
$ pod repo push --use-libraries iOSPod $podspecName.podspec --allow-warnings --sources=$privateSpecs,$publicSpecs
  • 将CocoaPods子组件打包成静态库
# 1.安装cocoapods-packager插件
$ sudo gem install cocoapods-packager

# 2.生成静态库
$ pod package [podspec_name].podspec --library --force

其中--library指定打包成.a文件,如果不带上将会打包成.framework文件。--force是指强制覆盖。

  • Podfile依赖库版本标注含义
pod 'BFDisplayEvent'      //不显式指定依赖库版本,表示每次都获取最新版本
pod 'BFDisplayEvent', '2.0'     //只使用2.0版本
pod 'BFDisplayEvent', '> 2.0'     //使用高于2.0的版本
pod 'BFDisplayEvent', '>= 2.0'     //使用大于或等于2.0的版本
pod 'BFDisplayEvent', '< 2.0'     //使用小于2.0的版本
pod 'BFDisplayEvent', '<= 2.0'     //使用小于或等于2.0的版本
pod 'BFDisplayEvent', '~> 0.1.2'     //使用大于等于0.1.2但小于0.2的版本
pod 'BFDisplayEvent', '~>0.1'     //使用大于等于0.1但小于1.0的版本
pod 'BFDisplayEvent', '~>0'     //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

以上,
因为扫货,无法避免存在错误,如发现,欢迎指正,谢谢。

  • 参考资料
  1. rvm, gem, bundle, rake, rails各种概念

  2. 发布CocoaPods私有库

你可能感兴趣的:(CocoPods干货及Ruby相关工具扫货)