再谈CocoaPods
1. 简介
java语言的第三方库管理工具是Maven,Node.js的第三方库管理工具是npm,而ios的第三方库管理工具是CocoaPods。
CocoaPods 的原理是将所有的依赖库都放到名为Pods的项目中,然后让主项目依赖Pods项目。Pods项目最终会编译成为libPods.a文件,主项目只需依赖这个.a文件即可。
前面的文章中: “安装配置”目录下 —— 《安装cocoaPods》讲了如何安装cocoaPods,及遇到的问题的解决方法;
“ios”目录下 —— 《创建podSpec,使用pod管理第三方库》讲了用podSpec文件管理第三方库的三种情况。
本篇文章主要介绍cocoaPods一些常用的知识点,并不是很系统,只是方便自己以后复习。
2. cocoaPods的镜像索引
前面我们已经知道,Podfile文件会先读取.podspec文件,根据.podspec文件的指向来下载第三方库到项目中。而所有项目的Podspec文件都托管在https://github.com/CocoaPods/Specs。第一次执行pod setup时,CocoaPods会将这些Podspec文件更新到本地~/.cocoapods/repos目录下。
由于直接用cocoaPod索引更新比较慢,有人在国内服务器gitcafe和oschina上建立了CocoaPods索引库的镜像,用这两个服务器比直接用cocoaPod的服务器下载快很多。如下操作可以把CocoaPods设置成使用这两个镜像之一:
pod repo remove master
pod repo add master https://gitcafe.com/akuandev/Specs.git
(或者:http://git.oschina.net/akuandev/Specs.git)
pod repo update
3. 使用cocoaPod管理第三方库
具体如何写Podfile文件,这里不做介绍。写好要管理第三方库的Podfile文件后,运行pod install安装第三方库,创建之后会生成三个文件:Pods文件夹、Podfile.lock文件和*.xcworkspace文件。
这里要记住以下两点:
(1)使用CocoaPods生成的*.xcworkspace文件打开工程,而不是以前的*.xcodeproj文件;
(2)每次更改了Podfile文件,都需要重新执行pod update命令。
4. pod search
pod search是用来查看某个第三方库是否在pod的仓库中,它的使用方法是:
pod search XXX
当然,这里搜索的是本地的~/.cocoapods/目录。
如果pod search 搜索出来的仓库低于github仓库的版本,那你可能需要升级一下CocoaPods版本,具体命令如下:
pod --version //查看当前Cocoapods版本
sudo gem install cocoapods
pod setup
5. .gitignore和Podfile.lock
Podfile.lock会锁定当前各依赖库的版本,之后使用pod install不会改变Podfile.lock文件,只有在使用pod update才会改变Podfile.lock文件。多人协作可以防止第三方库升级时造成每个人的第三方库版本不一致。Podfile.lock不应该加入到.gitignore中,This file should always be kept under version control.
6. 安装pod时不更新本地仓库的podspec方法
pod install --no-repo-update
pod update --no-repo-update
当然,在这个之前,你可以用pod install 和 pod update更新一次本地仓库的podspec。
ps:具体Podfile的写法,以及podspec的写法,这里并没有具体介绍,网上有很多,也可以参考之前的《创建podSpec,使用pod管理第三方库》文章。
7. 本地repo操作的命令有
#查看本地repo库(即查看本地目录~/.cocoapods/repos下的repo库)
pod repo list
#移除本地repo库XX
pod repo remove XX #添加远程url的repo库XX到本地
pod repo add XX url
#例如
pod repo SheronLv https://github.com/SheronLv/lvPodSpec.git #更新pod repo list列出的所有repo(从远程拉到本地)
pod repo update
再谈CocoaPods的更多相关文章
- [转载]再谈百度:KPI、无人机,以及一个必须给父母看的案例
[转载]再谈百度:KPI.无人机,以及一个必须给父母看的案例 发表于 2016-03-15 | 0 Comments | 阅读次数 33 原文: 再谈百度:KPI.无人机,以及一个必须 ...
- Support Vector Machine (3) : 再谈泛化误差(Generalization Error)
目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization ...
- Unity教程之再谈Unity中的优化技术
这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体 这一步主要是为了针对性能瓶颈中的”顶点 ...
- 浅谈HTTP中Get与Post的区别/HTTP协议与HTML表单(再谈GET与POST的区别)
HTTP协议与HTML表单(再谈GET与POST的区别) GET方式在request-line中传送数据:POST方式在request-line及request-body中均可以传送数据. http: ...
- Another Look at Events(再谈Events)
转载:http://www.qtcn.org/bbs/simple/?t31383.html Another Look at Events(再谈Events) 最近在学习Qt事件处理的时候发现一篇很不 ...
- C++ Primer 学习笔记_32_STL实践与分析(6) --再谈string类型(下)
STL实践与分析 --再谈string类型(下) 四.string类型的查找操作 string类型提供了6种查找函数,每种函数以不同形式的find命名.这些操作所有返回string::size_typ ...
- 再谈JSON -json定义及数据类型
再谈json 近期在项目中使用到了highcharts ,highstock做了一些统计分析.使用jQuery ajax那就不得不使用json, 可是在使用过程中也出现了非常多的疑惑,比方说,什么情况 ...
- C++ Primer 学习笔记_44_STL实践与分析(18)--再谈迭代器【下】
STL实践与分析 --再谈迭代器[下] 三.反向迭代器[续:习题] //P355 习题11.19 int main() { vector<int> iVec; for (vector< ...
- C++ Primer 学习笔记_43_STL实践与分析(17)--再谈迭代器【中】
STL实践与分析 --再谈迭代器[中] 二.iostream迭代[续] 3.ostream_iterator对象和ostream_iterator对象的使用 能够使用ostream_iterator对 ...
随机推荐
- POJ1061 青蛙的约会(线性同余方程)
线性同余方程$ ax \equiv b \pmod n$可以用扩展欧几里得算法求解. 这一题假设青蛙们跳t次后相遇,则可列方程: $$ Mt+X \equiv Nt+Y \pmod L$$ $$ (M ...
- extjs tips
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- BZOJ2707 : [SDOI2012]走迷宫
首先求出SCC缩点,E[T]=0,按拓扑序计算 对于无边连出的块,如果不是T所在块,则称该块是死路块 对于一个块,如果其中的点连出的边是死路块,则它也是死路块 否则对于每块进行高斯消元求出期望 如果S ...
- 【wikioi】1281 Xn数列(矩阵乘法)
http://wikioi.com/problem/1281/ 矩阵真是个神奇的东西.. 只要搞出一个矩阵乘法,那么递推式可以完美的用上快速幂,然后使复杂度降到log 真是神奇. 在本题中,应该很快能 ...
- BZOJ1224: [HNOI2002]彩票
Description 某地发行一套彩票.彩票上写有1到M这M个自然数.彩民可以在这M个数中任意选取N个不同的数打圈.每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同.每次抽奖将抽出两个自然数X和 ...
- MySQL 用户管理——权限表
权限表 权限表存放在mysql数据库中 user表结构 用户列:Host.User.Password 权限列:*priv 资源控制列:max* 安全列:其余 db表 存储了用户对某个数据库的操作权 ...
- SSH全注解开发
web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&quo ...
- ArcEngine 异常 :The index passed was not within the valid range.
pRowBuffer.set_Value(pFds.FindField("W_Mean"), Re_mean[3]); 此句代码弹出异常:The index passed was ...
- java密码验证正则表达式校验
,正则表达式就是记录文本规则的代码.php密码验证正则表达式(8位长度限制)<?php //密码验证 $password = "zongzi_Abc_oo13a2"; $n ...
- 【转】JavaScript顶级对象参考模型