本文来自 网易云社区 。

CocoaPods是iOS非常好用的类库管理工具,可以非常方便的管理和更新项目中使用到的第三方库,以及将自己项目中的公共组件交由它管理。

工作中比较常用到的是通过CocoaPods使用第三方库,那么,如果将自己的公共组件创建成podspec供其他人使用?踩过各种坑之后,下面整理了如何创建私有的podspec并在项目中部署使用的方法。

一、创建私有podspec

1、创建私有Spec Repc

Spec Repo是Pods的一个索引,是一个容器,实际是一个Git仓库,remote端在Git上,当使用CocoaPods后它会被clone到本地的~/.cocoapods/repos目录下。创建一个私有的Spec Repo后可以将自己的Pods添加进来。

先在Git上创建私有的Spec Repo地址,例:https://g.hz.netease.com/hztuyuling/DemoSpecs.git

然后通过命令行创建私有Spec Repo,如下图

创建成功后进入到~/.cocoapods/repos目录下就可以看到DemoSpecs这个目录。

2、创建Pod项目工程文件

2.1)cd到要创建项目的目录执行pod lib create 项目名

如下图为创建项目的过程。

2.2)向工程文件夹中添加库文件和资源并配置podspec文件。

2.3)添加好文件,工程无错后可以将项目推送到远端仓库。同样先创建一个远端Git项目地址:https://g.hz.netease.com/hztuyuling/NEMonkeyTT.git

然后将项目push到远端并打上tag,如下图。

2.4)编辑podspec文件。如下是我这边用到的字段并做了注释,官方文档有更详细的介绍,如果有需要用到其他字段,可以直接查阅:http://guides.cocoapods.org/syntax/podspec.html

2.5)编辑完后需要验证podspec文件是否可用。验证需要执行命令 pod lib lint 如下图验证通过。

3、本地测试podspec文件

此时由于podspec文件还没有push要远端,通过指定本地路径的方式进行测试,在测试项目中podfile文件中,可以通过如下两种方式来本地引进pod库。

4、向Spec Repo提交podspec

本地测试podspec文件无误后,最后一步是将podspec文件提交到私有Spec Repo中。

二、使用私有podspec

私有podspec创建好后,可以在项目中通过pod 库名的方式直接使用。

以下几点需要注意:

1、由于是私有的podspec,使用时需要确认已经添加了对应Git仓库的权限。

2、同样由于私有podspec的关系,在项目中pod时会出现找不到对应pod的情况,需要在podfile文件最前面先用source指明依赖库的地址。

3、如果是老项目中新增pod库,为了不影响已有的pod库,在podfile中添加新的pod命令后需要使用pod install进行安装。

*下面讲一下pod install 与 pod update 的区别

pod install:第一次在工程里面使用pod的时候使用,每次添加、移除pod的时候使用。pod install在下载、安装新的库的同时会把安装的库的版本都写在podfile.lock文件。pod install会下载安装pods里面但不在podfile.lock文件里的那些库之间的依赖。对于podfile.lock里列出的库,会下载podfile.lock里明确的版本,不会去检查该库是否有新的版本。对于还不在Podfile.lock里面的库,会找到Podfile里面描述对应版本(例如:pod "NEMonkeyTT", "~>0.0.1")。
pod update:会更新到这个库的新版本,而不需要考虑Podfile.lock里面的限制,它会更新到这个库尽可能的新版本,只要符合Podfile里面的版本限制。如果运行pod update,后面没有跟库的名字,CocoaPods就会更新每一个Podfile里面的库到尽可能的最新版本。

重点:使用pod update PODNAME去只更新某个特定的库(检查是否有新版本,并尽可能更新到新的版本)。而当在Podfile里面添加了一个库的时候,应该使用pod install,而不是pod update,这样既安装了这个库,也不需要去更新其它的已安装库。

三、更新私有podspec

当pod工程有更新后,将工程pod到远端Git仓库并打上新的tag。编辑podspec文件,更新s.version为新的tag版本号。本地验证podspec文件无误后,将podspec文件push到远端即可。更新成功后可以在~/.cocoapods/repos/NEMonkeyTT/目录下看到两个版本号。

通过pod search NEMonkeyTT查询也可以搜索到两个版本号。

至此,私有podspec更新发布好了,可以在使用时通过指定不同的版本号安装对应的podspec版本。

本文已由作者涂玉玲授权网易云社区发布。

手把手教你创建私有podspec的更多相关文章

  1. 【转】使用Cocoapods创建私有podspec

    Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理.Cocoapods的介绍及优点本文就不在赘述,我开始 ...

  2. 使用Cocoapods创建私有podspec

    Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理.Cocoapods的介绍及优点本文就不在赘述,我开始 ...

  3. 手把手教你创建「人物角色Persona」

    一.为什么要创建人物角色 下图来自 Cooper interaction design ,同样有购车需求的用户,用车的人不同.各自的目的不同,最终满足需求的车型也有很大差异.对于汽车公司而言,在车辆设 ...

  4. asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(一)—— 手把手教你创建第一个三层架构+mvc的asp.net项目

    下面开启项目 1. 打开vs2010-文件-新建项目 2. 先创建一个空的解决方案: 选择其他项目类型-visual studio 解决方案-空白解决方案(默认.NET Framework 4),项目 ...

  5. 手把手教你创建Azure ARM Template

    Azure的ARM模式在中国已经落地了.在ARM模式中,通过ARM的Template批量的创建各种资源是与ASM模式的最大的区别之一.目前Azure ARM的Template数量已经越来越多,更多的客 ...

  6. 手把手教你创建electron+vue项目

    electron可以结合前端的很多框架来进行快速的开发.在这里只讲一种electron结合vue并且使用前端的elementui来快速搭建一个项目页面. 第一步.创建electron 以管理员身份运行 ...

  7. 【原+转】创建CocoaPods私有podspec

    在我的上一篇文章<iOS 手把手教你发布代码到CocoaPods>中着重介绍如何将自己的代码索引添加到公开的CocoaPods中,当你需要主动地向大众开源你的代码时需要那么做.但在现实中我 ...

  8. 手把手教你使用IDEA2020创建SpringBoot项目

    一.New Project 二.如图选择Spring Initalizr,选择jdk版本,然后点击Next(注意:SpringBoot2开始至少使用JDK1.8) 三.如图根据自己需要修改,然后点击N ...

  9. 2015年12月01日 GitHub入门学习(二)手把手教你Git安装

    序:Mac与Linux中,Mac都预装了Git,各版本的Linux也都提供了Git的软件包.下面手把手教你Windows下的安装. 一.Git Windows GUI 下载地址 msysgit htt ...

随机推荐

  1. vmware 虚拟机导入OVF出现路径错误

    现状: 需要将原有数据中心的VM虚拟机导出本地OVF模板,然后迁移至新的机房虚拟化环境后从新导入. 问题: 导入OVF时候,先出现错误问题1,修复完成后,出现错误问题2 1. OVF迁移至本地以后,导 ...

  2. python模拟登陆豆瓣——简单方法

    学爬虫有一段时间了,前面没有总结又重装了系统,导致之前的代码和思考都没了..所以还是要及时整理总结备份.下面记录我模拟登陆豆瓣的方法,方法一登上了豆瓣,方法二重定向到了豆瓣中“我的喜欢”列表,获取了第 ...

  3. VS2010项目转换成VS2008

    声明:本篇文章不是本人原创,但是网站的地址没有记下来,所以不能贴出来.但此方法本人亲自验证有效. 一.将.sln文件中的 Microsoft Visual Studio Solution File, ...

  4. LaTeX 使用:itemize,enumerate,description 用法

    itemize和enumerate还有description 是LaTeX里列举的三种样式,分别讲一些使用技巧.itemize(意为分条目): \begin{itemize} \item[*] a \ ...

  5. 浅谈 unix, linux, ios, android 区别和联系

    浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答,本人很菜,大佬勿喷 UNIX 和 Linux   UNIX 操作系统(尤尼斯) ...

  6. Java 快速入门-06-JDK 目录文件说明

    Java 快速入门-06-JDK 目录文件说明 JDK:开发环境,搞技术的人或者应用服务器使用 JRE:运行环境,如浏览器插件或者Swing界面的客户端等最终用户需要使用 JDK自含一个JRE,并依赖 ...

  7. Tomcat启动时卡在“INFO: Deploying web application directory ......”的解决方法

    https://blog.csdn.net/njchenyi/article/details/46641141

  8. Struts 2 官方文档中文版

    最近正在学 Struts 2 ,咱英文水平不行啊,找到了<Struts 2 官方文档中文版>,虽然翻译的不全,有总比没有强. 地址:https://cwiki.apache.org/con ...

  9. windows程序设置开机自动启动

    //调用方法:设置开机启动 SetAutoRun(Process.GetCurrentProcess().ProcessName, true, Application.StartupPath + @& ...

  10. Eclipse导出可运行的jar包并运行

    https://blog.csdn.net/kpchen_0508/article/details/49275407 程序运行的第二种方式: