CocoaPods是什么

在iOS开发中势必会用到一些第三方依赖库,比如大家都熟悉的ASIHttpRequest、AFNetworking、JSONKit等。使用这些第三方类库能极大的方便项目的开发,但是,集成这些依赖库需要我们手动去配置,例如集成ASIHttpRequest库时除了加入源码以外还需要手动去添加一些系统框架,比如CFNetwork、MobileCoreServices等,如果这些第三方库发生了更新,还需要手动去更新项目。这就显得非常麻烦。有麻烦自然有解决办法,CocoaPods就是为了解决这个问题而生的。通过CocoaPods,我们可以将第三方的依赖库统一管理起来,配置和更新只需要通过简单的几行命令即可完成,大大的提高了实际开发中的工作效率,使我们的主要精力集中到更重要的事情上去。

 
安装cocoapods
mac系统自带ruby环境,网上有的教程是让你重新装svm,然后利用rvm再装ruby,注意区分
1, 将ruby的原生镜像移除
$ gem sources --remove https://rubygems.org/
   用淘宝的镜像代替
$ gem sources -a http://ruby.taobao.org/
 
PS:这一步是因为国内有墙的限制,会造成安装cocoapods的过程变的十分慢,替换为淘宝的镜像就相当于FQ。

 
2, 查看是否设置成功
$ gem sources -l

如果输出结果是如下这样,那说明这一步就成功了。

*** CURRENT SOURCES ***

http://ruby.taobao.org/

 
3, 然后安装cocoapods:
$ sudo gem install cocoapods
 
4, 查看cocoapods是否支持某个类库
$ pod search 类库名, 支持模糊查询(如:AFNetworking)
 
如何在项目中使用cocoapods?

我们通过集成MJR额fresh类库来演示如何使用CocoaPods来做依赖库管理。首先,建立一个xcode工程,命名为CocoaPodsTest,现在的工程结构如下图所示。

这里我们要集成JSONKit,可以先通过如下命令来判断其是否支持CocoaPods。

“`
$ pod search mjrefresh
“`

PS:支持模糊查询

执行后通过输出结果可以看到mjrefresh是支持CocoaPods的,注意红框标记的内容,这是待会我们配置xcode时需要的信息,这条配置项就是告诉CocoaPods去下载和管理那一个版本的第三方库。

出现Setting up CocoaPods master repo,说明Cocoapods在将它的信息下载到 ~/.cocoapods里,cd  到该目录里,用du -sh *命令来查看文件大小,每隔几分钟查看一次,我的这个目录最终大小是211M,就是完成了,。如果不成功,在下面会显示一个git的网址,在这个网址下载相应的文件放在电脑相应的文件夹即可。

检测完毕后我们来到工程CocoaPodsTest的目录下,新建一个名为Podfile的文件(这里通过命令行创建)

$ vim Podfile

这个Podfile文件的作用是配置依赖库信息,就是告诉CocoaPods去下载和管理哪些依赖库,文件创建好以后,打开文件并加入如下内容。(vim打开文件后按i进入插入模式,编辑完成后按esc退出编辑模式,接着输入:wq保存并退出文件)

这时候,工程目录下就会有一个Podfile文件了,注意必须和.xcodeproj在同一个目录下。接下来就可以使用CocoaPods来安装并管理JSONKit库了,确保命令行当前路径是在CocoaPodsTest目录下,运行如下命令。

$ pod install

安装完成后会提示如下信息,并且我们的工程目录下会多出一个.xcworkspace结尾的文件,命令行信息绿色部分提醒我们“从此使用CocoaPodsTest.xcworkspace来打开项目”。

通过CocoaPodsTest.xcworkspace来打开项目,这时,我们的项目工程结构就会变成下图这样,多出一个名为Pods的依赖工程,打开Pods文件夹后,发现MJRefresh已经在里面了

Mac安装Cocoapods

[!]
CocoaPods was not able to update the `master` repo. If this is an unexpected
issue and persists you can inspect it running `pod repo update --verbose`

找了很多资料,找到一种解决方法,纪录在此

rm -fr
~/.cocoapods/repos/master pod setup

这时候就可以在项目文件中引入JSONKit.h了,这时候如果你发现import的时候没有提示JSONKit的文件,可以在target-Build Settings下修改“User Header Search
Paths”项,新增${SRCROOT}并选择rcursive,如下图。

设置完成后就可以在文件中直接引用第三方库的文件并使用了。

到此,新建工程并使用CocoaPods来管理依赖库的过程就完成了,如果是直接使用已有CocoaPods的项目,则需要首先运行一下pod update命令来更新项,然后照样通过.xcworkspace来打开工程。

如果需要依赖多个第三方类库,只需要修改Podfile文件的配置,然后运行pod update命令即可,比如新增一个AFNetworking的依赖库,首先执行pod search AFNetworking查看一下AFNetworking的配置信息,修改Podfile文件,在后面增加AFNetworking的对应配置信息,然后运行pod update命令就完成了对AFNetworking的集成。

添加AFNetworking库后的目录结构如下。

如果类库有更新,查看更新配置并执行pod update即可简单完成了,从此从手动更新繁重的体力劳动中解脱出来。

简单小结一下

- 安装CocoaPods
- 新建项目并在工程根目录下新建Podfile文件,配置需要管理的第三方库
- 运行pod install下载安装第三方库

 
 
 

如何使用CocoaPods安装使用及配置私有库以及管理依赖库 【原创】的更多相关文章

  1. CocoaPods安装使用及配置私有库及注意点

    如何安装? 1.安装ruby环境,添加淘宝ruby镜像 $ gem sources --remove https://rubygems.org///等有反应之后再敲入以下命令$ gem sources ...

  2. 使用CocoaPods管理依赖库

    本篇内容将介绍Mac和iOS开发中必备的一个依赖库管理工具CocoaPods. CocoaPods是什么 在iOS开发中势必会用到一些第三方依赖库,比如大家都熟悉的ASIHttpRequest.AFN ...

  3. 配置新服务器 的一些 依赖库 php mysql nginx

    利用CentOS Linux系统自带的yum命令安装.升级所需的程序库 LANG=C yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel ...

  4. CentOS 7 安装Nginx 并配置自动启动

    1.官网下载安装包 http://nginx.org/en/download.html,选择适合Linux的版本,这里选择最新的版本,下载到本地后上传到服务器或者centos下直接wget命令下载. ...

  5. 细聊 Cocoapods 与 Xcode 工程配置

    前言 文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分. 既然是谈 Cocoapods,那首先要搞明白它出现的背景.有经验的开 ...

  6. 利用cocoapods创建基于git的私有库

    上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...

  7. 利用cocoapods创建基于git的私有库Spec Repo

    上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...

  8. 最新的 cocoaPods 安装方法

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

  9. cocoapods安装

    什么是cocoapods CocoaPods是一个用来帮助我们管理第三方依赖库的工具.它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我 ...

随机推荐

  1. 【LA5059】Playing With Stones (SG函数)

    题意:有n堆石子,分别有a[i]个.两个游戏者轮流操作,每次可以选一堆,拿走至少一个石子,但不能拿走超过一半的石子. 谁不能拿石子就算输,问先手胜负情况 n<=100,1<=a[i]< ...

  2. js 数组知识复习

    2.Array类型 2.1 创建数组 两种方式: 1.new Array(); //创建一个空数组 var arr1 = new Array(); //创建一个长度为10的空数组, var arr2 ...

  3. Understand:高效代码静态分析神器详解(一)【转】

    转自:http://www.codemx.cn/2016/04/30/Understand01/ 之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面, ...

  4. AC日记——黑魔法师之门 codevs 1995

    1995 黑魔法师之门  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 经过了16个工作日的紧张 ...

  5. 爬虫学习笔记(五) Beautiful Soup使用

    上篇博客说了正则表达式,但是正则学起来比较费劲,写的时候也不好写,这次说下Beautiful Soup怎么用,这个模块是用来解析html的,它操作很简单,用起来比较方便,比正则学习起来简单多了. 这是 ...

  6. Codeforces 632F Magic Matrix(bitset)

    题目链接  Magic Matrix 考虑第三个条件,如果不符合的话说明$a[i][k] < a[i][j]$ 或 $a[j][k] < a[i][j]$ 于是我们把所有的$(a[i][j ...

  7. 使用企业微信的API给指定用户发送消息

    上个月比较忙,等不忙了继续写点基础教程(五一还在高铁上写项目在).因为公司的原因,自己学习了点JavaWeb的知识,重新写了一个简单的后台管理,用于记录用户注册信息的.其中有这样的一个要求,就是在用户 ...

  8. Unix/Linux提权漏洞快速检测工具unix-privesc-check

    Unix/Linux提权漏洞快速检测工具unix-privesc-check   unix-privesc-check是Kali Linux自带的一款提权漏洞检测工具.它是一个Shell文件,可以检测 ...

  9. 块级元素和行内元素的区别 (block vs. inline)

    块级元素 (display: block) 独占一行,多个block元素会各自新起一行.默认情况下,block元素的宽度会填满父元素的宽度. 可以设置width, height属性.但是,即使设置了w ...

  10. golang实现dns域名解析(二)

    上一节已经讲了如何构造dns请求包的情况,这一节接着上一节的情况,谈谈dns查询报文中的问题部分.问题部分中每个问题的格式如下: 查询名是要查找的名字,它是一个或者多个标识符的序列.每个标识符以首字母 ...