ps:布景大图源于网络

在了解了cocoapods的简单使用后,接下来看看,假如使用cocoapods办理依靠库,在发布和使用的时分都做了什么事情: 在(一)中进行了pod install

一、关于popdspec文件

1. popdspec是什么;

podspec装备文件的内容简述:podspec是用于描绘一个 Pod 库的源代码和资源将怎么被打包编译成链接库或 framework 的文件,而Podspec中的这些描绘内容最终将映会映射到Specification类中(以下简称Spec)

podspec描绘了一个pod库的基本信息,库名,版别,获取的source地址,及其依靠的其他子库; 文件源地点git地址,源文件地点git地址的文件路径,源文件对应的tag值

2. 创立一个podsepec;

创立一个pod库,主动生成podspec文件:

pod lib create + 库名

cocoapod(二)—— 发布库,使用库

cocoapod(二)—— 发布库,使用库

podsepec文件中可设置的装备内容如下所示:

name:组件称号
version:组件版别
summary:简介
description:描绘
homepage:项目主页地址
license:开源协议(了解一下开源协议有哪几种)
author:作者
platform:指定编译的代码被指定到了哪个渠道以及该渠道的最低版别
source:项目的git地址
public_header_files:公开的头文件
resource:资源文件,单个
resources: 资源文件(含bundle)
source_file:需求包含的源文件;
dependency:依靠库,不能依靠未发布的库
subspec:子库(可设置文件夹分层)

如下是本地一个pod库的podspec文件:其间能看到该库的基本信息,路径等等:

cocoapod(二)—— 发布库,使用库

参考文章链接: zhuanlan.zhihu.com/p/265338343

3. pod发布都有哪些流程

  • 打tag;

  • 本地验证lint规矩;(可选)

  • 远端验证lint规矩;(可选)

  • 向索引库提交索引文件;

(1)私有库:pod repo push [索引库名][要提交的索引文件.podspec].

(2)公有库:

pod trunk register 邮箱:会收到一封验证邮件,点击后提示回到控制台

pod trunk push;

另外,在办理的时分通常会有一个索引库来寄存工程依靠的一切库的信息,包括前史tag,每一个打过前史tag的podspec文件,该文件内部描绘了对应:

cocoapod(二)—— 发布库,使用库
使用的时分会根据tag下的podspec文件来获取当时库的相关信息,来依靠到对应的代码;

二、发布和使用

1. 组件的发布流程(从创立到发布,详细看一下整个流程指导)

(1)、 创立本地库房

podlibcreate库名

根据提示,依照需求进行选择处理,完毕后,pod会主动帮你处理完结,创立一个新的pod库;

cocoapod(二)—— 发布库,使用库

(2)、 相关远端库房地址*

git remote add origin 远端库房链接

(3)、提交代码到远端,能够在sourcetree上操作,也能够经过git命令:

git push -u origin 分支称号

报错:

cocoapod(二)—— 发布库,使用库
分支搞错了,处理一下就好;

(4)、 打tag 能够在sourcetree上操作 也能够使用git命令

git tag -a tag符号-m "add tag tag符号"

gitpushorigintag符号

cocoapod(二)—— 发布库,使用库

(5)、 本地lint规矩验证 pod lib lint MyFirstProject.podspec –allow-warnings*

cocoapod(二)—— 发布库,使用库

(6)、 远端lint规矩验证 pod spec lint MyFirstProject.podspec –allow-warnings*

报错: “- ERROR | [iOS] unknown: Encountered an unknown error (incompatible character encodings: UTF-8 and ASCII-8BIT) during validation.”

cocoapod(二)—— 发布库,使用库
处理:source地址过错,用了中文,在进行spec远端规矩验证的时分编码格式报错;

修正后:

cocoapod(二)—— 发布库,使用库

(7)、发布到cocospod库房*

pod trunk push MyFirstProject.podspec –allow-warnings

报错:

cocoapod(二)—— 发布库,使用库

需求进行邮箱注册;

处理:

cocoapod(二)—— 发布库,使用库

(8)、发布到trunk源,这是一个全球公认的pod办理库房:

pod trunk push MyFirstProject.podspec –allow-warnings

报错:

cocoapod(二)—— 发布库,使用库

问题:库的发布到远端,猜测网络服务器不支持的问题; 另外查了一下trunk源上的信息,发现已存在该库名;

cocoapod(二)—— 发布库,使用库

到此发现trunk源一直发不上去;然后就发自己的私有源库去了

**ps:注意下trunk源对于同名pod库的处理,这儿没有检索到具体方式,等我再爸=扒一扒看看,或许有大佬能够解答下**

(9)、 添加到索引库 ,( 也是发布的进程 适当于是自己创立的一个私有源 来办理需求的podspec装备文件

索引库:github上创立一个库房,用来寄存podspec文件;

经过命令:pod repo add privatespec git地址

将其添加到repo下;

cocoapod(二)—— 发布库,使用库

然后经过:pod repo push privatespec MyFirstProject.podspec –allow-warnings 将该sdk的podspecpush到索引库里;

cocoapod(二)—— 发布库,使用库

检查索引库:

cocoapod(二)—— 发布库,使用库

到这儿,从创立一个pod库,到发布现已完结(正常是经过pod trunk push发布到全球公认的一个大的库房里,不过咱们也能够创立自己的私有库地址,将依靠的一切pod库办理起来)。 如下图是咱们索引库中的内容:

cocoapod(二)—— 发布库,使用库

cocoapod(二)—— 发布库,使用库

2. 发布上线之后,怎么使用

(1)、经过“podsearch库名”检索trunk源中是否有已上传的库

不过咱们这儿是将库传到了自己的私有源上,能够看到目前现已有咱们上传的pod库的相关描绘文件了。

(2)、在项目的podfile文件中,引入对应的库名,在工程下执行podinstall

cocoapod(二)—— 发布库,使用库

cocoapod(二)—— 发布库,使用库
然后你假如更新了该版别,要拉取最新的pod库:

方法一:在podfile中将版别号写为最新的,这样每次有新的库更新,都要修正podfile文件

方法二:在podfile中如下去加载pod,这样podinstall或许update的时分会去检索,做完依靠剖析后,拉取合适的版别;

cocoapod(二)—— 发布库,使用库

问题:podupdate的时分卡住:能够经过下面的命令来处理:

pod update –verbose –no-repo-update

pod install –verbose –no-repo-update

这儿看一下podinstall和podupdate的时分都做了些什么,同时两者的区别是什么,咱们下期见;