zoukankan      html  css  js  c++  java
  • CocoaPods -- ios项目中安装和使用CocoaPods

    CocoaPods是什么?

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

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

    如何下载和安装CocoaPods?

    现在的mac系统已经默认安装好Ruby环境,那么下载和安装CocoaPods将十分简单,只需要一行命令。在Terminator(也就是终端)中输入以下命令:

    但是,在终端中敲入这个命令之后,会发现半天没有任何反应。原因是那堵墙阻挡了cocoapods.org。

    解决办法是,我们可以用淘宝的Ruby镜像来访问cocoapods。按照下面的顺序在终端中敲入依次敲入命令:

    为了验证你的Ruby镜像是并且仅是taobao,可以用以下命令查看:

    只有在终端中出现下面文字才表明你上面的命令是成功的:

    这时候,你再次在终端中运行:

    等上十几秒钟,CocoaPods就可以在你本地下载并且安装好了,不再需要其他设置。

    为了确定CocoaPods是否可以使用,可以用CocoaPods的搜索功能验证一下。在终端中输入:

    过一段时间之后(可能会比较久),你会在终端中看到一些红色的错误信息,如下:

    Setting up CocoaPods master repo

    [!] /usr/bin/git clone 'https://github.com/CocoaPods/Specs.git' master --depth=1

    Cloning into 'master'...

    error: RPC failed; result=52, HTTP code = 0

    fatal: The remote end hung up unexpectedly

    这说明CocoaPods还不能正常使用,需要更新pod,下载它的一些依赖包;在终端中输入:

    过一段时间之后,你会在终端中看到跟上面同样的红色的错误信息。

    敲入以上命令时,小编终端上是这个样子的(由于太长,仅截取前面一部分):

    这说明某些环境原因导致pod更新不了,可能原因有,1)gem版本太低;2)github无法链接;3).cocoapods目录下的配置信息错误。我们可以一个一个来排除,

    首先更新gem到最新版本,在终端中输入:

    然后检查是否可以ping通github,在终端中输入:

    然后查看pob repo list:

    结果显示0 repos,说明没有安装成功;

    删除.cocoapods目录,重新下载pod更新:

    
    

    重新执行pod setup,过一段时间后提示setup completed,在终端中输入 pod list,展示出安装列表;

    敲入以上命令时,小编终端上是这个样子的(由于太长,仅截取前面一部分):

    看到这里,你心里会不会说,我靠!太爽了,终于下载并且安装好了!接下来看下如何使用吧。。

    如何使用CocoaPods?

    好了,安装好CocoPods之后,接下来就是使用它。所幸,使用CocoPods和安装它一样简单,也是通过一两行命令就可以搞定。

    这里用两种使用场景来具体说明如何使用CocoaPods。

    场景1:利用CocoaPods,在项目中导入AFNetworking类库

    AFNetworking类库在GitHub地址是:https://github.com/AFNetworking/AFNetworking

    为了确定AFNetworking是否支持CocoaPods,可以用CocoaPods的搜索功能验证一下。在终端中输入:

    过几秒钟之后,你会在终端中看到关于AFNetworking类库的一些信息。比如:

    这说明,AFNetworking是支持CocoaPods,所以我们可以利用CocoaPods将AFNetworking导入你的项目中。

    首先,我们需要在我们的项目中加入CocoaPods的支持。接下来在终端中通过命令进入一个xcode项目目录下,在这个目录下创建一个Podfile文件,然后在里面添加你需要下载的类库,也就是告诉CocoaPods,“某某和某某和某某某,快到碗里来!”。每个项目只需要一个Podfile文件。

    我们先创建这个神奇的PodFile。在终端中进入(cd命令)你项目所在目录,然后在当前目录下,利用vim创建Podfile,运行:

    然后在Podfile文件中输入以下文字:

    注意,这段文字不是小编凭空生成的,可以在AFNetworking的github页面找到。这两句文字的意思是,当前AFNetworking支持的iOS最高版本是iOS 7.0, 要下载的AFNetworking版本是2.0。打开AFNetworking类库在GitHub地址:https://github.com/AFNetworking/AFNetworking,在首页中你会找到以下信息,红框中的内容就是Podfile中的内容:

    然后保存退出。vim环境下,保存退出命令是:

    这时候,你会发现你的项目目录中,出现一个名字为Podfile的文件,而且文件内容就是你刚刚输入的内容。注意,Podfile文件应该和你的工程文件.xcodeproj在同一个目录下。

    这时候,你就可以利用CocoPods下载AFNetworking类库了。还是在终端中的当前项目目录下,运行以下命令:

    可能会出现几种错误信息,如下图:

    第一种错误:

    这个错误是因为你的Podfile文件没有创建到项目目录下,检测你的项目路径是否正确;

    第二种错误:

    访问github出错,需要配置dns服务器,有时候github打不开,就必须用8.8.8.8这个公网的dns服务器,其他的dns服务器,不知道为何解析github就不太行;配置方式如下:

    因为是在你的项目中导入AFNetworking,这就是为什么这个命令需要你进入你的项目所在目录中运行。

    运行上述命令之后,小编的终端出现以下信息:

    注意最后一句话,意思是:以后打开项目就用 CocoaPodsDemo.xcworkspace 打开,而不是之前的.xcodeproj文件。否则无法关联pod下来的类库。

    你也许会郁闷,为什么会出现.xcodeproj文件呢。这正是你刚刚运行$ pod install命令产生的新文件。除了这个文件,你会发现还多了另外一个文件“Podfile.lock”和一个文件夹“Pods”。 点击 CocoaPodsDemo.xcworkspace 打开之后工程之后,你会惊喜地发现,AFNetwoking已经成功导入项目了!

    现在,你就可以开始使用AFNetworking.h啦。可以稍微测试一下,在你的项目任意代码文件中输入:

    然后编译,看看是否出错。如果你严格按照小编上述的步骤来,是不可能出错的啦。

    至此,CocoPods的第一个应用场景讲述完毕。其实过程是十分简单的。总结一下就是:

    1. 先在项目中创建Podfile,Podfile的内容是你想导入的类库。一般类库的原作者会告诉你导入该类库应该如何写Podfile;
    2. 运行命令:`$ pod install.

    下面,继续讲述第二种使用场景。

    场景2:如何正确编译运行一个包含CocoPods类库的项目

    你也许曾经遇到过(特别是新手iOS开发者)这种情况,好不容易在GitHub上找到一份代码符合自己想需求,兴冲冲下载下来,一编译,傻眼了,发现有各种各样错误。一看,原来是缺失了各种其他第三方类库。这时候莫慌,你再仔细一看,会发现你下载的代码包含了Podfile。没错,这意味着你可以用CocoaPods很方便下载所需要的类库。

    下面,以代码 UAAppReviewManager 为例来说明如何正确编译运行一个包含CocoPods类库的项目。

    UAAppReviewManager是一个能够让你方便地将提醒用户评分的功能加入你的应用中。当你去UAAppReviewManager的GitHub地址下载这份代码之后,打开Example工程(UAAppReviewManagerExample),编译,你会发现Xcode报告一大堆错误,基本都是说你编译的这份代码找不到某某头文件,这就意味着你要成功编译UAAppReviewManager的Example代码,必须先导入一些第三方类库。同时你会发现在UAAppReviewManagerExample文件夹下面有三个跟CocosPods相关的文件(文件夹):Podfile,Podfile.lock和Pods,如下图:

    这时候,打开终端,进入UAAppReviewManagerExample所在的目录,也就是和Podfile在同一目录下,和场景1一样,输入以下命令(由于已经有Podfile,所以不需要再创建Podfile):

    过几秒(也许需要十几秒,取决于你的网络状况)之后,终端出现:

    这时候,再回到UAAppReviewManagerExample文件夹看一看,会看到多了一个文件UAAppReviewManagerExample.xcworkspace:

    根据终端的信息提示,你以后就需用新产生的UAAppReviewManagerExample.xcworkspace来运行这个Example代码了。

    打开UAAppReviewManagerExample.xcworkspace,编译运行,成功!如下图:


    注意,这里有个小问题,如果刚刚你不是输入$ pod update,而是输入$ pod install,会发现类库导入不成功,并且终端出现下面提示:

    这里的意思大概是Podfile文件过期,类库有升级,但是Podfile没有更改。$ pod install只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败。但是 $ pod update会更新所有的类库,获取最新版本的类库。而且你会发现,如果用了 $ pod update,再用 $ pod install 就成功了。

    那你也许会问,什么时候用 $ pod install,什么时候用 $ pod update 呢,我又不知道类库有没有新版本。好吧,那你每次直接用 $ pod update 算了。或者先用 $ pod install,如果不行,再用 $ pod update



    cocoaPods报错([!] /usr/bin/git clone 'https://github.com/CocoaPods/Specs.)

    【cocoaPods]在pod search AFNetworking之后报错([!] /usr/bin/git clone 'https://github.com/CocoaPods/Specs.)...
     
    转载:https://blog.csdn.net/jjmm2009/article/details/41944959
  • 相关阅读:
    sqlhelper使用指南
    大三学长带我学习JAVA。作业1. 第1讲.Java.SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行 大三学长带我学习JAVA。作业1.
    pku1201 Intervals
    hdu 1364 king
    pku 3268 Silver Cow Party
    pku 3169 Layout
    hdu 2680 Choose the best route
    hdu 2983
    pku 1716 Integer Intervals
    pku 2387 Til the Cows Come Home
  • 原文地址:https://www.cnblogs.com/xiyuan2016/p/9908003.html
Copyright © 2011-2022 走看看