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 + 库名
podsepec文件中可设置的装备内容如下所示:
name:组件称号
version:组件版别
summary:简介
description:描绘
homepage:项目主页地址
license:开源协议(了解一下开源协议有哪几种)
author:作者
platform:指定编译的代码被指定到了哪个渠道以及该渠道的最低版别
source:项目的git地址
public_header_files:公开的头文件
resource:资源文件,单个
resources: 资源文件(含bundle)
source_file:需求包含的源文件;
dependency:依靠库,不能依靠未发布的库
subspec:子库(可设置文件夹分层)
如下是本地一个pod库的podspec文件:其间能看到该库的基本信息,路径等等:
参考文章链接: 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文件,该文件内部描绘了对应:
使用的时分会根据tag下的podspec文件来获取当时库的相关信息,来依靠到对应的代码;
二、发布和使用
1. 组件的发布流程(从创立到发布,详细看一下整个流程指导)
(1)、 创立本地库房
podlibcreate库名
根据提示,依照需求进行选择处理,完毕后,pod会主动帮你处理完结,创立一个新的pod库;
(2)、 相关远端库房地址*
git remote add origin 远端库房链接
(3)、提交代码到远端,能够在sourcetree上操作,也能够经过git命令:
git push -u origin 分支称号
报错:
分支搞错了,处理一下就好;(4)、 打tag , 能够在sourcetree上操作 , 也能够使用git命令
git tag -a tag符号-m "add tag tag符号"
gitpushorigintag符号
(5)、 本地lint规矩验证 : pod lib lint MyFirstProject.podspec –allow-warnings*
(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.”
处理:source地址过错,用了中文,在进行spec远端规矩验证的时分编码格式报错;
修正后:
(7)、发布到cocospod库房*
pod trunk push MyFirstProject.podspec –allow-warnings
报错:
需求进行邮箱注册;
处理:
(8)、发布到trunk源,这是一个全球公认的pod办理库房:
pod trunk push MyFirstProject.podspec –allow-warnings
报错:
问题:库的发布到远端,猜测网络服务器不支持的问题; 另外查了一下trunk源上的信息,发现已存在该库名;
到此发现trunk源一直发不上去;然后就发自己的私有源库去了
**ps:注意下trunk源对于同名pod库的处理,这儿没有检索到具体方式,等我再爸=扒一扒看看,或许有大佬能够解答下**
(9)、 添加到索引库 ,( 也是发布的进程 , 适当于是自己创立的一个私有源 , 来办理需求的podspec装备文件 )
索引库:github上创立一个库房,用来寄存podspec文件;
经过命令:pod repo add privatespec git地址
将其添加到repo下;
然后经过:pod repo push privatespec MyFirstProject.podspec –allow-warnings 将该sdk的podspecpush到索引库里;
检查索引库:
到这儿,从创立一个pod库,到发布现已完结(正常是经过pod trunk push发布到全球公认的一个大的库房里,不过咱们也能够创立自己的私有库地址,将依靠的一切pod库办理起来)。 如下图是咱们索引库中的内容:
2. 发布上线之后,怎么使用
(1)、经过“podsearch库名”检索trunk源中是否有已上传的库
不过咱们这儿是将库传到了自己的私有源上,能够看到目前现已有咱们上传的pod库的相关描绘文件了。
(2)、在项目的podfile文件中,引入对应的库名,在工程下执行podinstall
然后你假如更新了该版别,要拉取最新的pod库:
方法一:在podfile中将版别号写为最新的,这样每次有新的库更新,都要修正podfile文件
方法二:在podfile中如下去加载pod,这样podinstall或许update的时分会去检索,做完依靠剖析后,拉取合适的版别;
问题:podupdate的时分卡住
:能够经过下面的命令来处理:
pod update –verbose –no-repo-update
pod install –verbose –no-repo-update
这儿看一下podinstall和podupdate的时分都做了些什么,同时两者的区别是什么,咱们下期见;