再谈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

 

原文地址:https://www.cnblogs.com/Xylophone/p/5180423.html