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的更多相关文章

  1. [转载]再谈百度:KPI、无人机,以及一个必须给父母看的案例

    [转载]再谈百度:KPI.无人机,以及一个必须给父母看的案例 发表于 2016-03-15   |   0 Comments   |   阅读次数 33 原文: 再谈百度:KPI.无人机,以及一个必须 ...

  2. Support Vector Machine (3) : 再谈泛化误差(Generalization Error)

    目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization ...

  3. Unity教程之再谈Unity中的优化技术

    这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体   这一步主要是为了针对性能瓶颈中的”顶点 ...

  4. 浅谈HTTP中Get与Post的区别/HTTP协议与HTML表单(再谈GET与POST的区别)

    HTTP协议与HTML表单(再谈GET与POST的区别) GET方式在request-line中传送数据:POST方式在request-line及request-body中均可以传送数据. http: ...

  5. Another Look at Events(再谈Events)

    转载:http://www.qtcn.org/bbs/simple/?t31383.html Another Look at Events(再谈Events) 最近在学习Qt事件处理的时候发现一篇很不 ...

  6. C++ Primer 学习笔记_32_STL实践与分析(6) --再谈string类型(下)

    STL实践与分析 --再谈string类型(下) 四.string类型的查找操作 string类型提供了6种查找函数,每种函数以不同形式的find命名.这些操作所有返回string::size_typ ...

  7. 再谈JSON -json定义及数据类型

    再谈json 近期在项目中使用到了highcharts ,highstock做了一些统计分析.使用jQuery ajax那就不得不使用json, 可是在使用过程中也出现了非常多的疑惑,比方说,什么情况 ...

  8. C++ Primer 学习笔记_44_STL实践与分析(18)--再谈迭代器【下】

    STL实践与分析 --再谈迭代器[下] 三.反向迭代器[续:习题] //P355 习题11.19 int main() { vector<int> iVec; for (vector< ...

  9. C++ Primer 学习笔记_43_STL实践与分析(17)--再谈迭代器【中】

    STL实践与分析 --再谈迭代器[中] 二.iostream迭代[续] 3.ostream_iterator对象和ostream_iterator对象的使用 能够使用ostream_iterator对 ...

随机推荐

  1. POJ2112 Optimal Milking(最大流)

    先Floyd求牛到机器最短距离,然后二分枚举最长的边. #include<cstdio> #include<cstring> #include<queue> #in ...

  2. kmp 和boyer-moore

    <html> <head> <meta http-equiv="content-type" content="text/html; char ...

  3. 【BZOJ】2330: [SCOI2011]糖果(差分约束+spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2330 差分约束运用了最短路中的三角形不等式,即d[v]<=d[u]+w(u, v),当然,最长 ...

  4. BZOJ3924 [Zjoi2015]幻想乡战略游戏

    Description 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看不过来, ...

  5. thinkphp框架中处理标签中条件输出

    这个问题是这样的,当我在模板中想在标签option中在某个条件下输出selected.但是在里边嵌套if标签的话,condition里边第二个参数使用变量的时候,不能解析.所以只能使用别的方法了.达到 ...

  6. 1215课后练习----indexOf的用法

    package com.hanqi; public class Testco { public static void main(String[] args) { String str1 = &quo ...

  7. sqlserver ldf过大处理方法

    第一步 DUMP TRANSACTION   databasename  WITH   NO_LOG  -- 第二步:截断事务日志  BACKUP LOG   databasename   WITH  ...

  8. Objective-C、C++和swift 的运行效率比较

    自己做iOS开发,以后慢慢都要转swift,前段时间看到网上的一个帖子,说swift的运行效率奇低,觉得自己有必要验证一下. 我用了一个最简单的加法运算,从0加到10000000,看三种语言的时耗. ...

  9. 将Asset中的数据库文件拷贝出来使用

    设置保存路径 private final static String DATABASE_PATH = "/data"+ Environment.getDataDirectory() ...

  10. PHP-FPM + Nginx: 502错误

    /etc/php5/fpm/pool.d/www.conf 里面找到这样一段代码: listen = 127.0.0.1:9000 在这上面代码的下面添加一行: listen = /var/run/p ...