iOS开发 - CocoaPods安装和使用教程
一、CocoaPods简介
1.什么是CocoaPods
CocoaPods是iOS的包管理工具。
2.为什么要使用CocoaPods
在开发iOS项目时,经常会使用第三方开源库,手动引入流程复杂,并且库之间还存在依赖关系,更增加了手动管理的难度。开源库如果升级了,你也想用最新版本,还需要重新手动导入,这大大增加了工作量。但用了CocoaPods后,安装和升级都只是一句命令的事情,让你可以专于业务本身。
二、CocoaPods安装
1. 安装Ruby
CocoaPods基于Ruby语言开发而成,因此安装CocoaPods前需要安装Ruby环境。幸运的是Mac系统默认自带Ruby环境,如果没有请自行查找安装。检测是否安装Ruby:
$ gem -v
2.0.14
安装则会提示当前Ruby版本。gem介绍:gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.org/ )源来查找、安装、升级和卸载软件包,非常的便捷。
2. 更换gem源
因为国内网络的问题导致gem源间歇性中断,原因你懂的。因此我们需要更换gem源,使用淘宝的gem源https://ruby.taobao.org/。
第一步:移动默认的源
gem sources --remove https://rubygems.org/
第二步:指定淘宝的源
gem sources -a https://ruby.taobao.org/
第三步:查看指定的源是不是淘宝源
$ gem sources -l
*** CURRENT SOURCES ***
https://ruby.taobao.org/
如果是https://ruby.taobao.org/,则更换成功。
3. 安装CocoaPods
终于开始安装CocoaPods,说实话本人都快忘记是在写CocoaPods的教程了,囧!确认改成淘宝源后执行以下命令进行安装:
sudo gem install cocoapods
稍等片刻即可安装完成,输入以下命令检测是否安装成功:
$ pod --version
0.39.0
成功则会提示CocoaPods版本,到此安装已告一段落。
三、CocoaPods使用实例
首先新建一个iOS工程MyDemo,在该工程中演示CocoaPods的使用。
1. 创建Podfile
进入工程的根目录,创建Podfile文件,创建完毕的目录如下图:
2. 编辑Podfile
根据需要,我们可以在Podfile文件中写入我们需要的第三方库,这里以AFNetworking和MJRefresh为例,Podfile内容如下:
platform :ios, '7.0'
pod 'AFNetworking', '~> 3.0'
pod 'MJRefresh','~> 3.1'
这段代码的意思是,当前类库支持的iOS最低版本是iOS 7.0, 要下载的两个类库的版本分别为 3.0、3.1。
3. pod install 导入第三方库
这时候,你就可以利用CocoPods下载AFNetworking和MJRefresh类库了。在终端中进入工程根目录,运行以下命令:
$ cd /Users/myl/Desktop/IOS/MyDemo
$ pod install
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (3.0.4)
Installing MJRefresh (3.1.0)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `MyDemo.xcworkspace` for this project from now on.
Sending stats
注意最后一句话,意思是:以后打开工程就用 MyDemo.xcworkspace 打开,而不是之前的.xcodeproj文件。你也许会郁闷,为什么会出现.xcworkspace文件呢。这正是你刚刚运行pod install命令产生的新文件。除了这个文件,你会发现还多了另外一个文件“Podfile.lock”和一个文件夹“Pods”。点击 MyDemo.xcworkspace 打开工程之后,你会发现工程目录多了一些,你会惊喜地发现,AFNetwoking和MJRefresh已经成功导入项目了!
新的目录结构:
4. pod update 更新第三方库
如果需要引入或删除类库,只需要修改Profile文件后执行以下命令即可:
pod update
5. 工程中使用类库
如果是OC项目,只需在使用的文件中导入该类库的头文件即可:
#import "AFNetworking.h"
#import "MJRefresh.h"
如果是Swift项目,使用OC的类库,需要新建桥接头文件(MyDemo-Bridging-Header.h),在头文件中导入要使用的类库:
#import <AFNetworking/AFNetworking.h>
#import <MJRefresh/MJRefresh.h>
四、常见问题
1. install,update速度慢
出现原因:你本地的repo库太长时间没有更新了
解决办法:pod repo update
原因在于当执行以上两个命令的时候会升级CocoaPods的specs仓库,如果不想在install,update的时候升级specs库,可以使用参数忽略掉
pod install –no-repo-update
pod update –no-repo-update
2. 导入Swift类库
导入Swift语言编写的类库时需要加use_frameworks!,下面以导入Alamofire为例:
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire', '~> 1.3'
3. 官方文档
对于Podfile参数细节,可以查阅官网,再此不做过多介绍。
http://guides.cocoapods.org/
本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma
iOS开发 - CocoaPods安装和使用教程的更多相关文章
- iOS开展-CocoaPods安装和使用教程
原文链接: iOS开展-CocoaPods安装和使用教程 修正已经增加了自己的理解. CocoaPods安装和使用教程 Code4App 原创文章.转载请注明出处:http://code4app.co ...
- iOS 网络 -- cocoaPods 安装和使用教程
Code4App 原创文章.转载请注明出处:http://code4app.com/article/cocoapods-install-usage CocoaPods 是什么? 当你开发iOS应用时, ...
- iOS 之 Cocoapods安装
进入正题前,先来点前奏:了解cocoapods是某天看一个博客,那时才明白原来写项目不用一个个将三方库拷进项目里啊,惊讶的我是一塌糊涂的啊...(原谅我那时还没进入过正规的IT公司....好多你们自然 ...
- << CocoaPods安装和使用教程 >>github code4app以及cocoachina 苹果官方文档
developer.apple.com 英文搜索各个技术的官方介绍文档, 前提是英文过关 cocoachina ios最新新闻, 信息 code4app上有许多组件 http://www.code4a ...
- 【转】iOS开发Xcode7真机调试教程
原文网址:https://www.skyfox.org/ios-xcode7-debug-device.html 从Xcode7开始,Xcode 不需要$99/$299升级开发者直接可以进行真机调试 ...
- 74.CocoaPods安装和使用教程
CocoaPods安装和使用教程 Code4App 原创文章.转载请注明出处:http://code4app.com/article/cocoapods-install-usage 第一: Coco ...
- iOS开发 - CocoaPods的常见使用方式
1 CocoaPods 的安装 1.1 作用: 帮助管理和维护第三方框架,快速的搜索到第三方框架, 然后自动集成到工程里面来, 并编译成一个libPod.a的静态库给我们项目用 1.2 理解: 1. ...
- iOS开发 cocoapods的安装以及使用
一.概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库(从一个坑出来,又 ...
- iOS开发CocoaPods使用
一.为什么用CocoaPods iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三 ...
随机推荐
- Java 反射的理解
反射反射,程序员的快乐,今天你快乐了吗?如果你不快乐,没关系,接下来让你快乐起来! 一.什么是反射? 通过百度百科我们可以知道,Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性 ...
- JSP文件转换成为JAVA文件后的结构
public final class zzz_jsp extends HttpJspBase implements JspSourceDependent{ public void _jspInit() ...
- Java基础——深入理解Java中的final关键字(转载)
Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...
- Button颜色选择器进阶
drawable/button_color.xml <?xml version="1.0" encoding="utf-8"?> <selec ...
- Redhat
vm1 port:192.168.210.102 user:root;pwd:123456 user:openflowpwd:openflowKkm09!q esx4.1 server 安装一.修改I ...
- 使用Java语言开发微信公众平台(四)——图文消息的发送与响应
在上一篇文章中,我们实现了被关注回复与关键词回复功能.在用户关注的时候自动推送功能菜单,并根据用户输入的关键词,回复特定信息.但是,我们只能回复文本消息给用户,如何才回复一条图文消息呢?本周,我们一起 ...
- MySQL中的一些内置函数
mysql> select now(); #获取当前的日期和时间 +---------------------+ | now() | +---------------------+ | -- : ...
- pxe+kickstart cobbler无人值守装机
环境准备: 一台服务器 [root@admin tftpboot]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [roo ...
- 山东省济南市历城第二中学——洛谷图论入门题--基本题必做 图的遍历—3.骑马修栅栏(fence)
由于我这个破题提交了十四五遍,所以我决定写篇博客来记录一下. 这个题的题目描述是这样的 首先一看这个题我瞬间就想到了一笔画问题(欧拉回路). 对于能够一笔画的图,我们有以下两个定理. 定理1:存在欧拉 ...
- SERVLET中的doGet与doPost两个方法之间的区别
get和post是http协议的两种方法,另外还有head, delete等 这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串.post的参数是通过另外的 ...