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> //安装指定的 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私有库

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • 第一次安装CocoaPods也遇到了一些坑,但是 那个时候时间比较紧,没有抽出时间整理,最近因为电脑还原从新做了系...
    幸福的尾巴__阅读 8,295评论 7 9
  • CocoaPods 是什么? CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPo...
    朝洋阅读 25,674评论 3 51
  • 过往的岁月是被时间吞噬还是被现实的面纱遮挡,我们的沧桑挂上了脸颊,多少无邪的笑声回荡在脑海,那些伤过的心还会疼痛不...
    黎明大叔阅读 194评论 0 1
  • 我想,我应该把梦捏一捏 把她捏得小点,实点 藏进心里 在孤独无眠的夜里 掏出来,读读 把他,读成白天 让夜,变得更短一些
    雷慕阅读 279评论 1 1
  • 秋日不觉得就来了 一丝丝凉意袭人 孤雁叫声侵人心房 窗外不知名的树 竟在一夜间黄了叶儿 微微的风吹落黄叶 像极了谁...
    坠水阅读 161评论 0 5