CocoaPods 安装和使用

一、《什么是CocoaPods》

官网描述:CocoaPods is the dependency manager for Swift and Objective-C Cocoa projects. It has almost ten thousand libraries and can help you scale your projects elegantly.(CocoaPods是一个独立的管理器,可以为Swift/Objective-C项目提供管理,它拥有数千万计的第三方库,因而可以帮你优雅地管理你的项目结构)

我的理解:让程序猿工作的效率更高,更方便的管理第三方库。(ios项目引用到第三方库很常见,有些大型项目引用的库可能是10+个,人为的管理起来,显得有点低效,正因为这样的应用需求,故Cocoapods出现了)

 

二、《如何安装》

首先、

  1.确保你的Mac安装了Brew  

  2.使用brew命令,安装ruby。(我们安装cocoapods需要ruby命令,所以需要安装ruby)

    安装命令: brew install ruby

  3.安装cocoapods

    按照官网的指示:在终端输入:sudo gem install cocoapods即可安装cocoapods成功。

    但注意,在tian朝似乎是没那么容易就可以安装成功的。(可以使用vpn代理去下载)

    如果没有vpn,接下来的具体步骤可以即使在tian朝也可以安装成功。

    终端依次输入以下命令:

    1)gem sources --remove https://rubygems.org/ 

    // (2016年01月15日09:33:26修改:需要使用https。)

    2)gem sources -a https://ruby.taobao.org/

    上面的步骤,主要是让你重新指定一个镜像地址,访问国内的镜像地址去下载安装cocoapods.

    查看是否修改镜像地址成功:

    3)gem sources -l

    修改成功后,就可以执行cocoapods安装命令安装cocoapods了。执行安装命令:

    4)sudo gem install cocoapods

    成功。

 三、《如何使用cocoapods》

  使用xcode创建一个项目、比如CocoaPodsDemo。使用终端cd进入到项目下、创建Podfile文件(没有后缀、只有名称,推荐使用pod init命令来创建Podfile模板)。

  编辑Podfile文件、推荐使用vim来写、编写pod文件的时候,需要注意:platform平台的定义ios要全部小写、注意引号(英文单点引号)。

  Podfile编写样例:

    platform:ios, '8.0'

    pod 'AFNetworking'

    pod 'SDWebImage'

  上面的3行说明了Podfile的编写规范。指定了ios平台,指定了ios的版本。并导入最新版本的AFNetworking,和最新版本的SDWebImage库。

  Podfile文件编写成功后,执行命令:pod install   开始安装。

  等待一会儿,cocoapods正在帮你下载你的第三方库。。。可能会有报错,大部分原因都是因为你的Podfile文件编写格式有错误。

  执行完成以后,你可以看到:

    $ pod install

    Analyzing dependencies

    Downloading dependencies

    Installing AFNetworking (2.5.4)

    Installing SDWebImage (3.7.2)

    Generating Pods project

    Integrating client project

    [!] Please close any current Xcode sessions and use `CocoapodsDemo.xcworkspace` for this project from now on.

  上面的信息说明第三方库已经成功导入到了我的CocoapodsDemo项目中了。按照最后一句说的来做。

  (pod指定版本的库,格式:pod 'ReactiveCocoa', '~> 2.5',不填写版本的话,默认pod最新版本的第三方库)

 

  打开我们项目中的CocoapodsDemo.xcworkspace项目,因为这个是Cocoapdos为我们整合了第三库,合并代码建立的项目。

  在代码里,比如使用SDWebImage,只要这样:       #import <SDWebImageManager.h>

  

  打开CocoapodsDemo.xcworkspace,可以看看cocoapods为我们创建的新的项目结构。

  可以看到项目中已经包含了SDWebImageManager和AFNetworking了。

  Cocoapods可以管理第三方库,我们可以这样做去更新第三方库:

  1. 使用pod的install命令去安装我们需要的第三方库。

  2.如果第三方库在github上面有新的更新,比如bug修复,功能性增加等。

  此时可以使用pod的另外一个命令(pod update) 去获取最新的库,cocoapods会自动为项目整合最新的代码,生成xcworkspace。

  3.使用pod search xxxx去查看是否有这样的库。例如(pod search SDWebImage) 

番外:

  如何删除一个不再需要的第三方库?

  同样,编辑Podfile文件,删除你想要去除的第三方库,保存Podfile文件,然后记得执行命令pod install。

至此,已经学会了如何使用Cocoapods去方便的导入第三方了。不用自己麻烦的拷贝粘贴,还有各种出错的信息需要去调试解决。

—————————————2016年05月03日10:33:47【注】—————————————————————

 

升级OS X系统版本10.11.4后,pod命令消失了。。。。重新按照上面的步骤,重新装一遍。

当执行到:sudo gem install cocoapods命令后,出现如下错误。

ERROR:  While executing gem ... (Errno::EPERM)

    Operation not permitted - /usr/bin/xcodeproj

尝试:

sudo nvram boot-args="rootless=0"

sudo reboot

命令关机重启后,问题并没有解决。。。

 

最终解决方法:sudo gem install -n /usr/local/bin cocoapods

 

转载于:https://www.cnblogs.com/vokie/p/4868624.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cmd黑窗口命令行模式进入指定盘符下的任意文件夹

通过使用命令&#xff0c;并加入参数 /d &#xff0c;可以通过一个步骤&#xff0c;直接进入指定盘符下的任意文件夹 比如要进入C盘下的C:\Users\Pactera\Desktop\rtt_web目录&#xff0c;则输入cd /d C:\Users\Pactera\Desktop\rtt_web

接口测试工具 restlet client

参考&#xff1a; https://blog.csdn.net/sunrainamazing/article/details/81281382https://blog.csdn.net/zlp1992/article/details/76706017 文章目录 下载若 你能翻墙下载 可以去如下网址下载方式二 采用离线CRX的方式进行安装(我用的第二种方式) 安装其次 &#xff0c; 一…

attr()与setAttribute()的区别

先看红色标注的&#xff1a; 这里传过来的this是个元素节点&#xff0c;因此currentTr也得用获取节点的方式parentNode去获取&#xff0c;而不能写parent()&#xff0c;这是第一个需要注意的地方。 第二个问题&#xff0c;就是怎么给currentTr设置属性和值得问题。我一开始想当…

我是如何成功准备VUE项目之前的开发环境?

提前安装好node, 参考我上一篇文章--------> 不同node.js版本 1.从git上把代码拷贝下来。 git clone +项目地址。 2.cmd模式下安装npm。 npm install 3.启动服务,npm run serve 。这里需要注意的是serve千万不要打成server啦,不然容易报错,这里还有两个小技…

moxy json介绍_通过MOXy实现使您的JAXB更清洁

moxy json介绍编组和解组XML时使用JAXB的主要优点是编程模型。 只需注释几个POJO并使用JAXB API&#xff0c;您就可以很容易地序列化为XML和从XML反序列化。 您无需担心有关XML如何编组/解组的细节。 一切都比DOM和SAX等替代方案简单得多。 现在&#xff0c;XML文件中的数据本质…

Tomcat样列目录session 操控漏洞

一、基本情况 漏洞级别&#xff1a;中危 漏洞类别&#xff1a;session操纵漏洞 二、问题描述 ApacheTomcat默认安装页面中存在examples样例目录。里面存放着Servlets、JSP、WebSocket的一些服务脚本和接口等样例。Servletsexamples服务样例下存在一个session的样例。该样例可…

Failed to compile. ./src/utils/request.js Module not found: Error: Can‘t resolve ‘util-merge‘ in ‘C

在webstorm运行vue的一个项目&#xff0c;访问主页报错&#xff1a; Failed to compile. ./src/utils/request.js Module not found: Error: Cant resolve util-merge in C:\Users\Pactera\Desktop\rtt_web\src\utils 检查了一下代码是缺少util-merge插件。可以在编译器上进…

发布:NetBeans IDE 8.1 Beta

NetBeans IDE 8.1 Beta已发布。 NetBeans IDE在为Java开发人员提供完整而全面的工具方面拥有超过15年的丰富经验。 在过去的几年中&#xff0c;NetBeans IDE已为JavaScript开发人员实现了同样的目标。 特别是&#xff0c;NetBeans IDE 8.1引入了用于Node.js应用程序开发的完整而…

域名DNS解析工具ping/nslookup/dig/host

常见 DNS 记录的类型 类型目的A地址记录&#xff0c;用来指定域名的 IPv4 地址&#xff0c;如果需要将域名指向一个 IP 地址&#xff0c;就需要添加 A 记录。AAAA用来指定主机名(或域名)对应的 IPv6 地址记录。CNAME如果需要将域名指向另一个域名&#xff0c;再由另一个域名提供…

RegularExpressionValidator 常用

RegularExpressionValidator 控件用于验证输入值是否匹配正则表达式指定的模式 属性&#xff1a; ControlToValidate"要验证的控件名称" ValidationExpression"验证规则" ErrorMessage"所要显示的错误信息" text“当验证失败时显示的消息。” Fo…

Gitlab添加SSH密钥的解决办法

打开git bash here, 注意期间“输入密码&#xff08;空没有密码&#xff09;&#xff1a;再次输入密码]&#xff1a;[键入密码]&#xff03;再次输入相同的密码”&#xff0c;如下&#xff1a; “Enter passphrase (empty for no passphrase): [Type a passphrase] # Enter sa…

TLS/SSl相关的攻击漏洞及检测方法大杂烩!

TLS/SSl相关的攻击漏洞及检测方法大杂烩&#xff01; 曾以为爱可以排除万难,可万难过后,又有万难。 漏洞介绍&#xff1a; TLS/SSL介绍&#xff1a; SSL“安全套接层”协议&#xff0c;TLS“安全传输层”协议&#xff0c;都属于是加密协议&#xff0c;在其网络数据传输中起到…

gitlab或者gitee生成/添加SSH公钥的解决办法

打开Git Bash Here, gitlab或者Gitee 提供了基于SSH协议的Git服务,在使用SSH协议访问仓库仓库之前,需要先配置好账户/仓库的SSH公钥。 你可以按如下命令来生成 sshkey: ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public/private rsa key pair... …

数据结构与算法——选择排序

//选择排序#include<stdio.h>void SelectSort(int arr[],int len);int main(void){ int i; int arr[9]{1,4,2,4,6,8,3,9,5}; int lensizeof(arr)/sizeof(arr[0]); SelectSort(arr,len); for(i0;i<len;i) { printf("%d ",arr[i]); }}void SelectSort(int arr…

点击劫持漏洞

1、漏洞理解 点击劫持&#xff08;Click Jacking&#xff09;是一种视觉上的欺骗手段&#xff0c;攻击者通过使用一个透明的iframe&#xff0c;覆盖在一个网页上&#xff0c;然后诱使用户在该页面上进行操作&#xff0c;通过调整iframe页面的位置&#xff0c;可以使得伪造的页面…

在 Gitee 上使用 GPG公钥(Beta版)

Windows 下载 https://gpg4win.org/ 生成 GPG Key 选择免费版的下载&#xff0c;无脑安装即可。 安装成功打开文件。 新建文件&#xff0c;创建个人密钥对&#xff0c;点击确认 输入码云的用户名及邮箱&#xff0c;一定要对应 输入完成可能需要输入或者创建密码&#xff0c;使…

javafx 值对_我今天对JavaFX的了解

javafx 值对如果您还没有听说过&#xff0c;JavaFX 2是Java的新Desktop / web / client框架。 自JavaFX 1以来&#xff0c;它已经进行了相当大的改动&#xff08;坦率地说&#xff0c;效果不那么令人印象深刻&#xff09;。 自定义脚本语言已经淘汰了&#xff0c;您可以使用标准…

Microsoft Windows MHTML脚本代码注入漏洞 (MS11-026) (CVE-2011-0096)

一、基本情况 漏洞级别&#xff1a;中危 漏洞类别&#xff1a;session操纵漏洞 二、问题描述 ApacheTomcat默认安装页面中存在examples样例目录。里面存放着Servlets、JSP、WebSocket的一些服务脚本和接口等样例。Servletsexamples服务样例下存在一个session的样例。该样例可…

我是如何解决gitlab 命令行上传需要输密码

使用如下两个命令得到pub文件内容&#xff0c;复制粘贴。 把上面得ssh-rsa后面一大串复制过来即可。 重新push代码。

android应用的界面编程----View与ViewGroup的概念

1 UI OverView Android中所有的UI元素都是通过View与ViewGroup来构建的&#xff0c;View是指屏幕中一块可与用户进行交互的空白&#xff0c;类似于java界面编程中的JPanel。为了界面布局&#xff0c;A Group对象可以包含多个View或ViewGroup&#xff08;由于ViewGroup是View的子…