CocoaPods学习系列1——安装和常规使用
CocoaPods是一个Github上的开源项目,目前已经成为iOS开发过程中标准的依赖库管理器,提供了一种对第三方类库简单优雅的集成和管理方案。
其工作原理,是将第三方类库统一管理到一个名为Pods的独立项目中,自动设置各种参数,然后让主项目通过只依赖该项目生成的.a静态链接库,就实现对所有第三方类库的依赖。
一、gem包管理器
安装CocoaPods,通常使用终端指令的方式。目前也有CocoaPods客户端可以使用了,在此只记录终端指令的方式。
通过终端,需要使用Ruby语言的gem包管理器。Mac已经自带了Ruby环境,只需要检查一下gem包管理器的版本,输入:
ruby -v
或者 gem -v
可以分别查看ruby和gem的版本。如果gem版本过低,可以使用升级指令:
sudo gem update --system
升级成功后会提示: Latest version currently installed. Aborting.
升级gem后,查看一下ruby的软件源,输入:
gem sources -l
如果输出如下:
*** CURRENT SOURCES ***
https://rubygems.org/
则需要更换软件源,因为上述软件源是ruby默认的亚马逊软件源,未FQ则无法访问。
更换软件源,依次输入每行指令如下:
gem sources --remove https://rubygems.org/
gem sources -a https://gems.ruby-china.org/
再次查看软件源是否已经被正确修改了。
之前用的https://ruby.taobao.org/貌似已经无效了。
至此,gem设置完毕。
二、安装CocoaPods
只需要一行指令即可:
sudo gem install cocoapods
如果提示错误:
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/xcodeproj
解决方案1:
sudo gem install cocoapods -V
如果依旧有错误,使用解决方案2:
sudo gem install -n /usr/local/bin cocoapods
pod setup
pod setup在执行时,会输出Setting up CocoaPods master repo。
安装成功后,你会看到:Setup completed
所有项目的Podspec文件都在https://github.com/CocoaPods/Specs。
第一次执行pod setup可能会等待特别长的时间,因为该操作实际上是将镜像索引specs克隆到~/.cocoapods/repos/master目录下。
目前的specs大概有二百多M,所以需要较长的时间。
有一种供参考的解决方案:
在执行pod setup前,输入:
pod repo remove master
pod repo add master https://gitcafe.com/akuandev/Specs.git 或者 pod repo add master https://git.oschina.net/akuandev/Specs.git
pod repo update
但是我尝试后,依然会出现一些错误提示。
推荐另一种解决方案,执行:
pod repo remove master
git clone https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/master
pod repo update
其实就是将第二步,替换为直接用git将specs克隆到目标目录,仓库位置可以使用其他仓库替代。
最后执行pod setup,出现Setup completed即成功安装了CocoaPods。
三、使用CocoaPods添加第三方类库依赖
CocoaPods添加第三方库,需要先配置Podfile文件。
在终端中使用cd指令,cd到项目根目录下,即与xcodeproj工程文件同目录。
输入:
vim Podfile
该指令将创建一个Podfile文件,终端界面进入Podfile编辑状态。
以添加AFNetworking库为例,输入如下内容:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
target 'xxx' do
pod 'AFNetworking', '~> 3.0'
end
以上内容,可以在AFNetworking的Github首页找到。target的名称需要修改为当前项目的target名称。
然后,点击ESC键,输入:
:wq
就可以保存并退出编辑状态。如果遇到无法退出,则输入:
:wq!
如果需要在终端中查看或编辑Podfile,再此输入:
vi Podfile
就可以了重复上述操作。
完成编辑后,输入:
pod install
等待执行完毕,即完成了对AFNetworking库的添加。
创建Podfile,也可以使用pod init指令,生成模板内容,再自行修改。
更多指令,输入:
pod --help
可以查看。
进入项目根目录,将发现多了几个文件和文件夹。
1.Podfile记录了对第三方类库的依赖配置。
2.Podfile.lock文件会锁定当前各依赖库的版本,之后即使多次执行pod install也不会修改。只有执行pod update才会修改Podfile.lock。
3.Pods文件夹存放了第三方类库及引用配置
这些文件都应该始终被版本控制器管理。
在此之后,
1.打开工程项目,需要使用.xcworkspace文件
2.可以在Xcode中直接更新Pods项目下的Podfile文件
3.需要再次更新Podfile,只需要执行pod install或者update
4.更新Podfile时候,若不需要更新Podspec索引,可以在上述指令后增加--no-repo-update
5.可以在终端中搜索类库,例如:pod search SDWebImage
CocoaPods学习系列1——安装和常规使用的更多相关文章
- 全网最详细的Git学习系列之安装各个Git图形客户端(Windows、Linux、Mac系统皆适用ing)(图文详解)
不多说,直接上干货! 目前Git图形客户端 TortoiseGit .SourceTree .GitUp .SmartGit .QGit .GitX .Gitnub.Tower .Git-cola . ...
- RabbitMQ学习系列一安装RabbitMQ服务
RabbitMQ学习系列一:windows下安装RabbitMQ服务 http://www.80iter.com/blog/1437026462550244 Rabbit MQ 是建立在强大的Erla ...
- Oracle11g R2学习系列 之一安装篇
前言 最近想去前同事推荐的一个Oracle相关的岗位竞争一下,由于之前没有使用Oracle的相关经验,所以决定学习一下,就算最终岗位应聘不成,至少也有了一些Oracle经验了,说不定哪天就用上了.再说 ...
- Docker学习系列之一——安装篇
一.目的 Docker是目前非常流行的虚拟技术,在云计算领域得到了广泛的应用.国内的阿里.京东等大厂都非常普遍地应用了Docker.本文记录了Docker的基本安装过程及最终运行结果,以期备忘,及和同 ...
- 【redis 学习系列】安装-配置-卸载Redis
一.安装 wget http://download.redis.io/releases/redis-3.0.7.tar.gz tar -zxf redis-.tar.gz ln -s redis- r ...
- CocoaPods学习系列5——错误集锦
这篇文章记录使用CocoaPods过程中遇到的一些错误. 1.error:include of non-modular header inside framework module 在自定义类库中,引 ...
- CocoaPods学习系列4——进阶用法
这篇文章,记录一下CocoaPods的进阶用法. 进阶用法主要体现在.podspec文件和Podfile的配置上. .podspec文件的进阶配置 以官方的一个.podspec文件示例细说: Pod: ...
- CocoaPods学习系列3——创建和使用私有Pods
前一篇记录了使自己的项目支持CocoaPods管理的过程,核心的步骤就是podspec的配置和提交.这个文件,记录了类库的详细信息,用于对类库的集成. 需要注意的一点,上一篇创建的podspec文件, ...
- CocoaPods学习系列2——使自己的项目支持CocoaPods管理
该篇记录使自己的项目支持CocoaPods管理. 要达到这一目的,需要如下步骤: 1.将自己的项目提交到github,添加开源协议license 2.添加podspec文件 3.验证podspec,成 ...
随机推荐
- 延迟任务和循环任务ScheduledExecutorService
public class ScheduledThreadPool { public static ScheduledExecutorService scheduledThreadPool = Exec ...
- windosw启动redis
1.cmd控制台 cd C:\Program Files\Redis 2.redis-server.exe redis.windows.conf 3. ok!!
- 理解java集合——集合框架 Collection、Map
1.概述: @white Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)"丢进"该容器中. 2.Java集合大致可以分4类: @white Set ...
- 巨蟒python全栈开发-第4天 列表&元组&range
今日内容大纲 1. 什么是列表 定义: 能装对象的对象 在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求 列表存在索引和切片. 和字符串是一样的. 2. 相关的增删改查操 ...
- <2014 04 16> 上班实习第一天
找了家开发3D printer的创业公司实习,做(嵌入式)软件工程师.今天第一天. 1.熟悉了基于SLA技术的3D打印机的主要关键问题,机械结构. 控制系统是基于PC-Clinet和一个树莓派ARM/ ...
- 洛谷 [BJOI2012]最多的方案
洛谷 这题是旁边同学介绍的,听他说记忆化搜索可以过... 不过我还是老老实实的想\(dp\)吧- 先看看数据范围,\(n\leq10^{18}\)相当于\(n \leq fib[86]\). 以前打\ ...
- Android图片加载框架之Picasso
相信做Android开发的对Square公司一定不会陌生,大名鼎鼎的网络请求框架Retrofit就来源于它,今天学习的是该公司出品的图片加载框架Picasso. 项目地址 https://github ...
- python中decorator的用法及原理(一)
0. 概念 什么叫装饰器,其实也可以叫做包装器.即对于一个既有的函数func(args),在调用它之前和之后,我们希望都做一些事情,把这个函数包装起来. Python中的装饰器分为两类:函数装饰器和类 ...
- php strtotime 函数UNIX时间戳
int strtotime ( string time [, int now]) 本函数预期接受一个包含英文日期格式的字符串并尝试将其解析为 UNIX 时间戳. 如果 time 的格式是绝对时间则 n ...
- Python 字符串连接问题归结
一.概述 Python 字符串连接场景较为普遍.由于编者对 Java 等语言较为熟悉,常常将两者语法混淆. 加之,Python 语法较为灵活.例如,单单实现字符串连接,就有数种方法.在此,一并归结! ...