从零开始学习CocoaPods安装和使用

 
            http://m.ithao123.cn/content-9745764.html
 
 

CocoaPods是什么?

当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。总之小编的意思就是,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。如果能有什么工具能解决这些恼人的问题,那将“善莫大焉”。所以,你需要 CocoaPods。

CocoaPods应该是iOS最常用最有名的类库管理工具了,上述两个烦人的问题,通过cocoaPods,只需要一行命令就可以完全解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,作为iOS程序员的我们,掌握CocoaPods的使用是必不可少的基本技能了。

iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库。

如何下载和安装CocoaPods?

由于网上的教程基本都大同小异,但细节之处还不是很完善,所以借机会在这里补充下:

注意:要使用CocoaPods,那就要下载安装它,而下载安装CocoaPods需要Ruby语言编译环境。(有关Ruby语言的简介见百度百科

1、Ruby环境搭建

值得庆幸的是,苹果的Mac OS X系统自带了ruby语言环境的(Python也自带了),在Mac终端输入 ruby -v 命令可以查看当前ruby版本。

Mac OS本身自带Ruby可能比较老旧,但还是更新一下保险,因为我第一次安装在没有更新Ruby的情况下安装CocoaPods就失败了。

a 查看下当前ruby版本:

打开终端输入 ruby -v(确实安装了,不过用这个版本接下来工作失败了,所以更新下ruby)。终端显示如下:

  1. ritekiMac-mini:PodTest lucky$ ruby -v
  2. ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
  3. ritekiMac-mini:PodTest lucky$

b 更新ruby:

终端输入如下命令(把Ruby镜像指向taobao提供的Ruby镜像地址,避免被墙,你懂得)

gem sources --remove https://rubygems.org/ 
gem sources -a https://ruby.taobao.org/            (注意淘宝已更新使用https了)
gem sources -l              (用来检查淘宝提供的Ruby镜像地址是否设置成功)

  1. ritekiMac-mini:~ lucky$ gem sources --remove https://rubygems.org/
  2. https://rubygems.org/ removed from sources
  3. ritekiMac-mini:~ lucky$ gem sources -a http://ruby.taobao.org/
  4. http://ruby.taobao.org/ added to sources
  5. ritekiMac-mini:~ lucky$ gem sources -l
  6. *** CURRENT SOURCES ***
  7. https://ruby.taobao.org/

2、下载安装CocoaPods

完成第一步Ruby环境配置后,接着在Mac终端输入: sudo gem install cocoapods  等待几秒钟,期间可能会提示你输入电脑的管理员密码,这个可以理解,用过Mac系统的都知道,在安装应用软件之前,都会提示你输入管理员密码的!

  1. ritekiMac-mini:~ lucky$ sudo gem install cocoapods
  2. CHANGELOG:
  3. ## 0.32.1
  4. ##### Bug Fixes
  5. * Fixed the Podfile `default_subspec` attribute in nested subspecs.
  6. [Fabio Pelosin][irrationalfab]
  7. \ [#2050](https://github.com/CocoaPods/CocoaPods/issues/2050)
  8. Successfully installed cocoapods-0.32.1
  9. Installing ri documentation for cocoapods-0.32.1
  10. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
  11. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
  12. Done installing documentation for cocoapods after 10 seconds
  13. 1 gem installed

这样就下载安装好了CocoaPods,看到这里,你心里会不会说,我靠!太爽了,这么容易就可以下载并且安装好了!是的,我也是这么想的。CocoPods就是这么简单,使用也十分简单。继续往下看吧。

3、使用CocoaPods

a.  使用Xcode在桌面上新建一个项目,名字PodTest

b.  在终端中,cd到项目总目录cd /Users/lucky/Desktop/PodTest(注意:一定是包含PodTest文件夹、PodTest.xcodeproj的那个总目录)

c.  建立Podfile配置文件: 在终端输入 touch Podfile  回车 (使用 vim Podfile也可以创建)

d.  编辑Podfile配置文件: 在终端输入 vim Podfile  回车
e.  进入vim编辑界面后,首先输入 i,才能进入编辑模式,然后输入如下代码:

  platform :ios, '6.0' 
  pod 'MBProgressHUD', '~> 0.9.2'

  注意,这段文字不是凭空生成的,可以在MBProgressHUD的github页面找到。这两句文字的意思是,当前AFNetworking支持的iOS最低版本是iOS 6.0, 要下载的MBProgressHUD版本是0.9.2

  然后按Esc,并且输入 : 号,进入vim命令模式,然后在 : 后边输入wq后回车,终端就会保存并退出vim编辑器。

f. 打开PodTest项目,发现总目录中多一个Podfile文件

g.  激动人心的时刻到了:

在终端 cd到项目总目录,然后输入 pod install,等待一会,大约3分钟。

h. 现在打开项目PodTest根目录文件夹,点击 PodTest.xcworkspace打开项目,注意上面终端中提示的那句话

From now on use `PodTest.xcworkspace`.  所以再也不要点击 PodTest.xodeproj打开项目了:

i. 打开项目后看到如下项目结构,试着导入头文件测试一下:

运行结果如下:

4. 补充知识:

1、如果需要同时导入多个第三方库文件时该怎么操作呢 ?

  这就需要修改Podfile了,就是用vim编辑的那个保存在项目根目录中的文件,修改完了Podfile文件,需要重新执行一次pod install命令。

  例如:

  platform :ios

  pod 'JSONKit', '~> 1.4'

  pod 'AFNetworking', '~> 2.0'

2、如果不知道即将导入库文件的版本,此时可以利用CocoaPods的搜索功能去查找,也可以直接去gitHub上搜索该第三方库。

  CocoaPods的搜索:打开终端输入命令:pod search MBProgressHUD   界面如下:

  

从零开始学习CocoaPods安装和使用的更多相关文章

  1. 从零开始学习jQuery (一) 入门篇

    本系列文章导航 从零开始学习jQuery (一) 入门篇 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些 ...

  2. 从零开始学习Hadoop--前言

    Hadoop是最著名使用最广泛的分布式大数据处理框架,它是用Java开发的. 这本书有一个明确的目标:只要有一台能上网的计算机,就可以让读者在最短的时间内,学会Hadoop的初级开发.所以,这本书只讲 ...

  3. 从零开始学习jQuery (一) 开天辟地入门篇

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章是入门第一篇, 主要是简单介绍jQuer ...

  4. iOS工具】rvm、Ruby环境和CocoaPods安装使用及相关报错问题解决

    〇.前言 <p>在iOS开发中 CocoaPods作为库依赖管理工具就是一把利器. 有了 CocoaPods则无需再通过拖 第三方库及第三方库所依赖的 framework静态库到项目中等麻 ...

  5. 从零开始学习 asp.net core 2.1 web api 后端api基础框架(二)-创建项目

    原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(二)-创建项目 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  6. 从零开始学习docker之在docker中搭建redis(集群)

    docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...

  7. 从零开始学习JAVA(入门基础)

    目录 博主从零开始学习JAVA(入门基础) 1.搭建JAVA开发环境 卸载JDK(未安装的请忽略) 安装JDK 2.编程语言中,何为编译型与解释型 编译型 解释型 3.第一个JAVA应用程序 4.JA ...

  8. ASP.NET从零开始学习EF的增删改查

           ASP.NET从零开始学习EF的增删改查           最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...

  9. 最新的 cocoaPods 安装方法

    经过努力终于发现了最新的 解决cocoaPods安装的办法: taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务 第一步:安装rvm, 不管需不需要升级ruby,rvm可以 ...

随机推荐

  1. MySql5.5以上版本设置主从结构的例子

    为了实现读写分离,一般都需要先设置好mysql的主从结构,网上现有的mysql配置大都基于低版本,在5.5以上版本无法配置成功,所以参考了官方文档,写了这篇笔记. *主要参考Mysql 5.6的官方文 ...

  2. CSS3,3D效果轮播图

    ---恢复内容开始--- 大家还记得我昨天的3D拖拽立方体吗??我昨天还说过css还可以做轮播图,所以咱们今天就写一下,css的轮播图吧! ....这个轮播图主要是用CSS3里的transform的旋 ...

  3. c# 利用反射 从json字符串 动态创建类的实例 并动态为实例成员赋值

    转自 http://hi.baidu.com/wjinbd/item/c54d43d998beb33be3108fdd 1 创建自己要用的类 class stu { string _name; int ...

  4. Android Button事件处理

    一般只需要处理按钮的点击事件就可以,但想让一个按钮处理多个事件,就得同时监听多个方法. OnClickListener  点击事件 OnLongClickListener 长按事件 OnTouchLi ...

  5. OLED中的Demura

    OLED作为一种电流型发光器件已越来越多地被应用于高性能显示中.由于它自发光的特性,与LCD相比,AMOLED具有高对比度.超轻薄.可弯曲等诸多优点.但是,亮度均匀性和残像仍然是它目前面临的两个主要难 ...

  6. 关于map容器的元素被无参初始化

    使用C++中的map容器定义一个mp,当你执行if语句判断mp[3]是否为1时,那么如果mp[3]以前不存在,此时mp[3]就会被无参初始化,second赋值为0. 以下的程序可以证明这一点.执行了第 ...

  7. 超详细Redis入门教程【转】

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下   [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...

  8. python 类属性及限制

    Student类本身需要绑定一个属性直接在class中定义属性,这种属性是类属性,归Student类所有:class Student(object): name = 'Student'类的所有实例都可 ...

  9. Task执行内幕与结果处理解密

    本课主题 Task执行内幕与结果处理解密 引言 这一章我们主要关心的是 Task 是怎样被计算的以及结果是怎么被处理的 了解 Task 是怎样被计算的以及结果是怎么被处理的 Task 执行原理流程图 ...

  10. python csv写入数据,消除空行

    import csv rowlist=[{'first_name': 'mark', 'last_name': 'zhao','age':21}, {'first_name': 'tony', 'la ...