内容简介:iOS·实用工具详解CocoaPods「安装+问题解决+活用」持续更新
引导
对你有帮助或是喜欢,你的 「Star & Fork」 是对我最大的赞赏 !
简书原文 http://www.jianshu.com/p/97cd9ca92b25
在开发 OS X 和 iOS 应用程序中, CocoaPods 作为库依赖管理 工具 就是一把利器。
相信很多开发者跟我当初一样,在 CocoaPods 的安装上踩了无数的坑,接着就是报错问题一个一个的来,以至于不能正常使用,更不用说活用的技巧了。作为【iOS 程序员】的我们,掌握CocoaPods 的使用是必不可少的基本技能了。
本着好好学习,一劳永逸的目地,所以写了 实用学习总结。并亲测成功,整理了一份相关资料。
本文为「简书-白开水ln」作者原创;我的写作,希望能简化到初学者尽快入门和老司机繁琐回顾 ^_^.
在「时间 & 知识 」有限内,总结的文章难免有「未全、不足 」的地方,还望各位好友指出,以提高文章质量。
Contents【相关介绍】
1. CocoaPods 是什么?
CocoaPods是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。利用 CocoaPods,可以定义自己的依赖关系 (称作 pods),并且随着时间的变化,以 及在整个开发环境中对第三方库的版本管理非常方便。
2. CocoaPods 背后的理念主要体现在两个方面
-
在工程中引入第三方代码 会涉及到许多内容。针对
Objective-C
初级开发者来说,工程文件的配置会让 人很沮丧。 -
在配置
build phases
和linker flags
过程中,会引起许多人为因素的 错误,CocoaPods 简化了这一切
,它能够自动配置编译选项,而且涉及到第三方库的更新升级也可以通过CocoaPods
进行手动管理更新。
3. CocoaPods 的原理
-
它是将所有的依赖库都放到另一个名为
Pods
项目中,然后 让主项目依赖 Pods 项目,这样,源码管理工作都从主项目移到了Pods项目中。 -
Pods项目最终会编译成一个名为
libPods.a
的文件,主项目只需要依赖这个.a
文件即可。 -
对于资源文件,
CocoaPods
提供了一个名为Pods-resources.sh
的bash 脚本
,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目 标目录中。 -
CocoaPods
通过一个名为Pods.xcconfig
的文件来在编译时设置所有的依赖 和 参数。
CocoaPods
是用 ruby
实现的,要想使用它首先需要有 ruby
的环境。幸运的是 OS X系统 默认已经可以运行 ruby
了。但是有时候 ruby
版本过低是无法正常支持 CocoaPods
的使用,所以需要先安装更新升级 rvm
和 ruby
。
3. Homebrew、Rvm、 Ruby 简介
-
Homebrew 介绍
Homebrew
是一个软件包管理器,用于在mac
上安装一些os x
上没有的UNiX
工具;类似于360软件管理器。 -
Rvm 介绍
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是一种面向对象的脚本语言,简单易用,功能强大。能跨平台和可移植性好等等。其实就是种脚本语言。
Ruby的软件源使用的是亚马逊的云服务,国内网络环境下载时可能会出现各种不稳定和超时,
所以自带的需要翻墙,可以将 官方
ruby
源 替换成国内 淘宝ruby
源( https://ruby.taobao.org/ )或者是由
China ruby
源 ( https://gems.ruby-china.org/ )。据消息了解,2016.06【taboo Gems】停止维护了,建议使用 【ruby-china】源。
Installation【CocoaPods 安装】
第一步:检查安装 rvm 环境
提示:不管需不需要升级 ruby,rvm 可以让你拥有多个版本的Ruby,并且可以在多个版本之间自由切换。如果已经安装过跳到第2步。
查看是否安装 $ rvm -v 输出结果:( 存在 rvm 环境) LNdeMacBook-Pro:~ sunhui$ rvm -v rvm 1.29.1 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io/] 输出结果:(不存在 rvm 环境) LNdeMacBook-Pro:~ sunhui$ rvm -v -bash: rvm: command not found
情况二:如果不存在 rvm 环境,先安装配置 rvm 环境 ① 指令安装 rvm $ curl -L get.rvm.io | bash -s stable ② 然后,载入 RVM 环境 $ source ~/.bashrc $ source ~/.bash_profile ③ 等待终端加载完毕,后输入 $ rvm -v 如果能显示版本号则安装成功了。
第二步:检查 ruby 版本环境
提示:CocoaPods 目前安装需要Ruby的版本大于2.2.2,不然会报错: Error installing pods: activesupport requires Rubyversion >= 2.2.2
。目前Mac系统默认自带是2.0,所以需要升级。
① 查看已安装的ruby: $ ruby -v ② 列出ruby可安装的版本信息 rvm list known ③ 指定 ruby 版本进行更新 $ rvm install 2.3.0 ④ 这里一定要设置为默认版本 rvm use 2.3.0 --default 等待时间,完成后 Ruby Gems 就安装好了 补充: 1.卸载一个已安装版本 $ rvm remove 1.9.2 2.检查 gem ruby 版本号 $ sudo gem -v 3.更新 gem ruby 版本号:(建议 升级到 2.6.x 以上) $ gem update --system
第三步:更换源
我们需要来修改更换源(由于国内被墙)所以要把源切换至 ruby-china
在终端执行以下命令
1.更新gem $ sudo gem update --system 2.先移除现有的源 $ gem sources --remove https://rubygems.org/ 如果安装了淘宝的镜像 $ gem sources --remove https://ruby.taobao.org/ 3.使用新的源 $ gem sources -a https://gems.ruby-china.org/ 4.验证新源是否替换成功 $ gem sources -l 只有在终端中出现下面文字才表明你上面的命令是成功的: *** CURRENT SOURCES *** 说明 CocoaPods 前期配置完毕
第四步:安装Cocoapods
提示:安装 CocoaPods( sudo 表示管理员执行指令 )( 此处需要输入一次密码 )
这里有几种选择,你看心情来吧 ~
选择一:
1.在终端输入以下命令: $ sudo gem install -n /usr/local/bin cocoapods $ pod setup 这个过程会很慢,据说大多都是挂机一晚上才装好的,继续往下看吧,总有更好的。
选择二:
1.执行: $ git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master 2.切记要: $ pod repo update 感觉也就几分钟的样子,
先随便搜索一个第三方库,如:
$ pod search AFNetWorking 有结果不报错说明已经安装成功了。
选择三:
把你同事已经装好了CocoaPods cocoapods目录下的 repo 目录拷贝下来,放进自己的目录里。 再 $ pod setup。
验证是否安装成功
$ pod --version 如果验证成功,显示版本号,如,0.39.0,说明可以安装全部完成. 如果显示-bash: po: command not found,说明没有装好
Getting Started【开始使用】
第一步 :
我们先创建这个神奇的 PodFile
。在终端中进入(cd命令)你项目所在目录,然后在当前目录下,利用vim创建Podfile
1.cd 到目录文件夹 $ cd /Users/ln/Desktop/LNTestDemo 2.提示 如果不知道第三方库版本的情况下, 建议先查找一下当前所需第三方库的最新版本,如: $ pod search 'AFNetworking' 3.创建 Podfile 配置文件 $ vim Podfile
第二步 :
键盘输入 i
,进入 Podfile 配置文件的编辑模式
Podfile 配置文件固定语句:
说明:可能有些人看到的固定语句不一样,但是大同小异,基本上都能实现最终效果。 (~> 可以指定对应版本,不指定默认为最新版本) # Uncomment this line to define a global platform for your project platform :ios, '8.0' target 'LNTestDemo' do // 你的项目名称,自行替换 # Uncomment this line if you're using Swift or would like to use dynamic frameworks # Pods for LNTestDemo pod 'AFNetworking', '~>3.1.0' pod 'SDWebImage' pod 'MBProgressHUD' pod 'FMDB' pod 'Masonry' pod 'MJExtension' pod 'MJRefresh' # use_frameworks! # pod 'ReactiveCocoa' end
按一次 Esc
按键退出编辑模式
保存并退出 :wq
这时候,你会发现你的项目目录中,出现一个名字为 Podfile
的文件,而且文件内容就是你刚刚输入的内容。注意, Podfile
文件应该和你的工程文件 .xcodeproj
在同一个目录下。
现在,你就可以利用CocoPods下载 AFNetworking
等类库了。还是在终端中的当前项目目录下,运行以下命令:
下载第三方库文件到项目工程中 $ pod install
注意:
1、以后打开项目就用 CocoaPodsDemo.xcworkspace
打开,
而不是之前的 .xcodeproj
文件。否则无法关联pod下来的类库。
2、每次更改了 Podfile
文件,你需要重新执行一次 pod update
命令。
3、 CocoaPods
在执行 pod install
和 pod update
时,会默认先更新一次 CocoPods
的 spec
仓库索引。使用 --no-repo-update
参数可以禁止其做索引更新操作
$ pod install --no-repo-update $ pod update --no-repo-update
4、验证框架是否支持cocoaPods
$ pod search MJRefresh
提供: 在线搜索验证在线,能搜出说明支持 https://cocoapods.org
5、 cocoaPods
隐藏目录
- 前往—>个人—>.cocoapods
- .cocoapods/repos/master/Specs放着所有第三方库的索引文件,如下图
技巧:如果master/Specs下载不成功,试着,手动拷贝这个目录试试
6、【卸载 CocoaPods 安装】和【回退到指定 CocoaPods 版本】
卸载 CocoaPods 安装 $ sudo gem uninstall cocoa pods 回退到指定 CocoaPods 版本 $ sudo gem install -n /usr/local/bin cocoapods --version 0.39
7、查看 CocoaPods 下载进度
还有一点需要注意, pod setup
在执行时,会输出 Setting up CocoaPods master repo
,但是会等待比较久的时间。这步其实是 Cocoapods
在将它的信息下载到 ~/.cocoapods
目录下,如果你等太久,可以试着 cd
到那个目录,用 du -sh *
来查看下载进度
执行语句 $ sudo gem install -n /usr/local/bin cocoapods
8、在使用时,导入第三方库,应是 < >
#import <UIImageView+WebCache.h> #import <AFNetworking.h>
9、使用 pod install
命令安装框架后的大致过程:
1.分析依赖:该步骤会分析Podfile,查看不同类库之间的依赖情况。 如果有多个类库依赖于同一个类库,但是依赖于不同的版本,那么cocoaPods会自动设置一个兼容的版本。 2.下载依赖:根据分析依赖的结果,下载指定版本的类库到本地项目中。 3.生成Pods项目:创建一个Pods项目专门用来编译和管理第三方框架, CocoaPods会将所需的框架,库等内容添加到项目中,并且进行相应的配置。 4.整合Pods项目:将Pods和项目整合到一个工作空间中,并且设置文件链接。
CocoaPods【安装过程中报错问题解决】
说明:此部分所列举的问题均是在执行相关指令时出现的报错
1、Rvm 环境搭建
1.报错指令: $ rvm install 2.3.0 2.报错问题: Error running 'requirements_osx_brew_update_system ruby-2.3.0', showing last 15 lines of /Users/jijiucheng/.rvm/log/1475769205_ruby-2.3.0/update_system.log ...... ...... Requirements installation failed with status: 1. curl: (35) Server aborted the SSL handshake 3.报错原因: 网络问题,因为需要翻墙,所以网络不稳定;建议选择 VPN,保证线路的稳定性。 4.问题解决:(指令一行一行输入) $ cd /usr/local $ git remote set-url origin git://mirrors.ustc.edu.cn/brew.git $ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bashrc 5.解决方案:
解决方案连接:https://segmentfault.com/q/1010000004276750
1.报错指令: $ rvm install 2.3.0 2.报错信息: Error running '__rvm_make -j 1', showing last 15 lines of /Users/jijiucheng/.rvm/log/1475769349_ruby-2.3.0/make.log ...... ...... There has been an error while running make. Halting the installation. 3.报错原因: 缺少 Xcode 工具,xcode command line 4.问题解决: $ xcode-select --install
解决方案连接1:http://stackoverflow.com/questions/35228481/error-running-rvm-make-install
解决方案连接2:http://www.th7.cn/Program/Ruby/201609/966343.shtml1.报错指令: $ rvm install 2.3.0 2.报错信息: muxuguixiandeMacBook-Pro:local jijiucheng$ rvm install 2.3.0 Already installed ruby-2.3.0. To reinstall use: . rvm reinstall ruby-2.3.0 . Gemset '' does not exist, 'rvm ruby-2.3.0 do rvm gemset create ' first, or append '--create'. 3.报错原因: 指令不对,已经存在 ruby-2.3.0 的文件残留,需要重新安装; 4.问题解决: $ rvm reinstall ruby-2.3.0
2、Ruby 环境搭建
待总结 ~ ~
欢迎你补充,我会及时加上,相互学习,我们的分享会让很多人少踩一些坑,少花费一点时间,学习到实用的知识。
可下面留言~
3、CocoaPods 配置使用
1.报错指令: $ pod install 2.报错信息: muxuguixiandeMacBook-Pro:NFCustomer jijiucheng$ pod install Setting up CocoaPods master repo [!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`. You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`. 3.报错原因: 由于安装了多个Xcode导致路径变了,需要变换路径: sudo xcode-select -switch /Applications/Xcode.app sudo xcode-select -switch /Applications/Xcode\ 2.app 4.问题解决: $ sudo xcode-select -switch /Applications/Xcode.app 5.资料补充: 出现 Setting up CocoaPods master repo,说明 Cocoapods 在将它的信息下载到 ~/.cocoapods 里; 新创建终端窗口,输入 cd ~/.cocoapods ,回车,输入 du -sh * 命令来查看文件大小, 每隔几分钟查看一次,这个目录最终大小是100多M( 本人这里大概 800M + ),就是完成了。
解决方案连接1:https://zhidao.baidu.com/question/2205760733872673348.html
解决方案连接2:http://blog.csdn.net/zhangjunjian127/article/details/47954981instruction【指令补充】
1、Rvm 指令库
$ ruby -v # 查看ruby 版本 $ rvm list known # 列出已知的 ruby 版本 $ rvm install 2.3.0 # 选择指定 ruby 版本进行更新 $ rvm get stable # 更新 rvm $ rvm use 2.2.2 # 切换到指定 ruby 版本 $ rvm use 2.2.2 --default # 设置指定 ruby 版本为默认版本 $ rvm list # 查询已安装的 ruby 版本 $ rvm remove 1.9.2 # 卸载移除 指定 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=2.3.0 # 安装 rvm 指定版本 $ source ~/.rvm/scripts/rvm # 载入 rvm
2、gem 指令库
$ 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 的环境 $ $ sudo gem -v # 查看 gem 版本(以管理员权限) $ sudo gem install cocoa pods # 安装 CocoaPods(以管理员权限) $ sudo gem install cocoapods # 安装 CocoaPods(以管理员权限) $ sudo gem install cocoapods --pre # 安装 CocoaPods 至预览版(以管理员权限) $ sudo gem install cocoapods -v 0.39.0 # 安装 CocoaPods 指定版本(以管理员权限) $ sudo gem update cocoapods # 更新 CocoaPods 至最新版(以管理员权限) $ sudo gem update cocoapods --pre # 更新 CocoaPods 至预览版(以管理员权限) $ sudo gem uninstall cocoapods -v 0.39.0 # 移除 CocoaPods 指定版本(以管理员权限) 本文为「简书-白开水ln」作者原创;我的写作,希望能简化到初学者尽快入门和老司机繁琐回顾 ^_^.
3、pod 指令库
$ pod setup # CocoaPods 将信息下载到~/.cocoapods/repos 目录下。 如果安装 CocoaPods 时不执行此命令,在初次执行 pod intall 命令时,系统也会自动执行该指令 $ pod --version # 检查 CocoaPods 是否安装成功及其版本号 $ pod install # 安装 CocoaPods 的配置文件 Podfile
CocoaPods 均可参考的资料
01 rvm、Ruby环境和CocoaPods安装使用及相关报错问题解决
03 CocoaPods: pod search 搜索类库失败的解决办法
04整理Cocoapods安装
05cocoa pods安装报错
06新手安装CocoaPods
07 安装cocoaPods以及在OSX10.11.5问题总结
10 最新cocoapods步骤(主要针对Xcode8以上)
13
期待
-
如果在阅读过程中遇到 error,希望你能 Issues 我,谢谢。
-
如果你想为【CocoaPods相关】 分享点什么,也希望你能 Issues 我,我非常想为这篇文章增加更多实用的内容,谢谢。
-
「博客原文」,对本文我会【不定时、持续更新、一些 学习心得与文章、实用才是硬道理】^_^.
Write in the last
附上一张图:
About me
温馨提示:【真的不点进去阅读一下 :question:】
更多有关本文系统文件的属性和方法及常用功能代码案例,请移步这里【白开水ln】:(我) 也是对所花费时间的一个总结
【白开水ln】:(我) 只是个【有思想的伐码猿:monkey:】加上【自己的学习总:coffee:️】写出来的文章。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Nodejs实用工具库
- Vue.js 中的实用工具方法
- 你应该知道的5个Docker实用工具
- go语言Json解析实用工具 - gjson
- 推荐两款实用工具——hcache和SQLPad
- 推荐两款实用工具——hcache和SQLPad
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。