再谈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对 ...
随机推荐
- 核反应堆[HDU2085]
核反应堆 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- [leetCode][013] Two Sum 2
题目: Given an array of integers that is already sorted in ascending order, find two numbers such that ...
- TYVJ P1067 合唱队形 Label:上升子序列?
背景 NOIP2004 提高组 第三道 描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号 ...
- CentOS 下实现两台服务器之间的共享NFS
NFS的安装配置:centos 5 :yum install nfs-utils portmapcentos 6 :yum install nfs-utils rpcbind yum install ...
- 使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解
本文用代码简单介绍cjson的使用方法,1)创建json,从json中获取数据.2)创建json数组和解析json数组 1. 创建json,从json中获取数据 #include <stdio. ...
- CSS透明度大汇总
近年来,CSS不透明算得上是一种相当流行的技术,但在跨浏览器支持上,对于开发者来说,可以说是一件令人头疼的事情.目前还没有一个通用方法,以确保透明度设置可以在目前使用的所有浏览器上有效. 这篇汇总主要 ...
- 简单查看tomcat中部署java服务的内存使用情况
vim tomcat_mem.sh NAME=$1 #部署项目名称 #PID=`ps -ef|grep tomcat|grep $NAME|awk '{print $2}'` PID=`ps -ef| ...
- hdu Pie
这道题是一道二分搜索的题,首先计算出最大的平均体积:mx=V总/f:然后去left=0,right=mx,mid=(left+right)/2进行二分搜索,当所有pi分割出的mid的个数是大于等于f时 ...
- php中alert弹出时单双引号问题
php代码中单双引号问题是个很重要的问题,使用不当会造成很多麻烦.先记录一下今天写alert遇到的麻烦.我做登录的时候,成功时想弹出个提示说登录成功.写alert语句时不显示.其实就是单双引号弄得不对 ...
- 从eclipse到Android studio/迁移eclipse的Android项目到Android studio平台的注意事项
整体要注意的地方 先说明一下整体需要注意的地方 1在Android studio建立项目的时候,要注意包名和原来的完全一致,不然会有很多需要改动. 2依赖的jar一定一定要找齐,不然新建项目引用不到, ...