再谈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对 ...
随机推荐
- BZOJ2051 : A Problem For Fun
树的点分治,将点分治的过程记录下来,每一个分治结构按到分治中心的距离维护所有点. 对于一个点二分答案,然后在$O(\log n)$个分治结构中二分查找,时间复杂度$O(n\log^3n)$. #inc ...
- Android下载文件到SD卡
HttpURLConnection 上传方式: 尝试理解这两种流的区别: InputStreamReader 的读取方式: //创建一个URL对象 URL url = new URL(urlStrin ...
- 解决Apache CXF 不支持传递java.sql.Timestamp和java.util.HashMap类型问题
在项目中使用Apache开源的Services Framework CXF来发布WebService,CXF能够很简洁与Spring Framework 集成在一起,在发布WebService的过程中 ...
- Resources
McGuire Computer Graphics Data http://mesh.brown.edu/calibration/software.html Pixar Online Library ...
- sql语句清除mssql日志
DUMP TRANSACTION TestDB WITH NO_LOG 清除日志 DBCC SHRINKFILE ('TestDB_log',1) 收缩数据库文件 -----直接 ...
- win8 iis 安装
win8下面安装iis跟win7一样,需要通过启用和关闭windouws功能来安装iis,具体要选哪些项,请看图: 如果要使用wcf服务,你还需要勾选以下项:
- linux下IPTABLES配置
如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables - ...
- CSS与JavaScript文件的位置
1.CSS 尽量放置在head标签中. 原因: 避免浏览器重新渲染: 避免阻塞JS文件的执行. 注:CSS选择器的解释顺序是 从右向左 的,所以尽量减少选择器的层级. 2.JS 尽量放置在</b ...
- 如何设置jquery的ajax方法为同步
jax请求默认的都是异步的如果想同步 async设置为false就可以(默认是true) var html = $.ajax({ url: "some.php", async: ...
- Javascript 笔记与总结(2-16)事件对象
事件对象:事件发生的瞬间,发生位置.时间.鼠标按键.触发的节点等信息,被打包成一个对象,此对象,系统自动传递给事件函数的第一个参数. [例]记录 鼠标划过图片时的事件对象 <!DOCTYPE h ...