让自己写的项目支持Cocoapods管理
学会使用别人的 Pods 依赖库以后, 你一定对创建自己的依赖库很有兴趣吧,现在我们一起来制作自己的Pods依赖库。
1.创建自己的 github 仓库

上图中标识出了6处地方
- Repository name: 仓库名称,这里写上我们的依赖库名字 HJGame ,必填。
- Description: 仓库的描述信息,可选。
- Public or Private: 仓库的公开性,开源的话选 Public 。 如果是公司内部使用的话这里推荐大家使用私有的仓库,但是 github 的私有仓库是要收费的 $7/month (壕请无视 - -!)。大部分公司都是有自己的git服务器,不过一般只能在公司内网使用,或者可以选择Gitlab,Coding, Bitbucket任意一种。
- Initialize: 是否默认创建一个 README 文档,一个完整的库都会有这个说明文档,这里最好勾选一下。不过如果忘记的话也不要紧,后面手动创建也是可以的。
- .gitignore: 忽略项文件,记录一些想忽略的文件类型,凡是该文件包含的文件类型, git 都不会将其纳入到版本管理中。看需要选择就行。
- license: 正规的仓库都有一个 license 文件, Pods 依赖库对这个文件要求比较严格,需要有这个文件。这里最好让 github 自动创建一个,不过后续手动创建也行。我们这次先使用 MIT 类型的 license。
上面各项根据大家需要填写完毕后,点击 Create repository 按钮即可,生成仓库后,复制仓库地址:

2.clone 仓库到本地
打开终端窗口 cd/Desktop ;clone https://github.com/JJloveLL/HJGame.git 下载完成后 通过 pwd 命令查看当前的文件结构如下:

其实还有一个隐藏的 .git 文件,后续我们的所有文件都在这个目录底下进行。
3.向本地仓库中添加创建 Pods 依赖库所需的文件
1)把需要添加Pods依赖库的文件,都移动到当前桌面 HJGame文件夹里;
2)在当前桌面HJGame文件路劲下,创建.podspec文件:
创建这个文件有两种途径:
- 复制已有的 podspec 文件然后修改对应的参数。
- 执行命令行创建。
我们使用命令行:
pod spec create HJGame 创建出HJGame.podspec 文件后,我们打开可以发现,该文件是 ruby 文件,里面有很多的内容,但是大多数都是我们不需要的,所以我们只需要根据项目的情况保留关键的一些内容就行:
添加完成后保存。
以上所有的步骤都是准备阶段……
现在进去项目阶段
执行命令:
git tag 1.0.0 (版本号)
git add .
git commit -m “提交注释”
git push origin 1.0.0 (tag版本号)
然后验证podspec文件的合法性:
pod spec lint HJGame.podspec (验证合法性)
验证通过如下状态:

但是此处验证一般有两处坑点:(podspec 文件填的不合法)
错误如下:

验证通过后执行命令:
git add -A
git push origin master
同步到git仓库里。
通过以上步骤创建Pod库还只能供自己使用,下面会继续讲解如何将其提交到CocoaPods/Specs代码库中,让其他人也可以通过pod install安装我们的开源库。
CocoaPods Trunk发布自己的Pods
在cocoapods使用了trunk之后,CocoaPods 需要0.33以上版本,用 pod --version查看版本,如果版本低,需要更新。
注册Trunk
1、$ pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air' ($ pod trunk register 自己邮件地址 '注册用户名' --description='描述')
大家在注册时需要替换成自己的邮箱和用户名,一切顺利的话就会受到一份邮件,点击邮件中的链接后验证一下:
验证过后通过pod trunk me 自己的cocopods注册的信息

当然,如果你的pod是由多人维护的,你也可以添加其他维护者:
$ pod trunk add-owner ARAnalytics kyle@cocoapods.org
上面的工作完成之后,我们就可以开始 trunk push了,执行命令:
pod trunk push
等待几分钟 我们项目就发布到cocopods上了,别人就可以添加使用我们开源库了。

至此我们整个制作自己的开源库的过程就完成了,以后有新版本只需要修改工程根目录下的podspec文件就行了,然后重新执行pod trunk push命令。
最后
最后对这个过程做个总结:
1.开源库发布之后,需要打上tag
2.进入到项目根目录下,创建podspec文件
pod spec create PodName
3.编辑podspec文件中的相关信息,有两个比较重要的地方s.source和s.source_files,可以验证是否有误:
pod spec lint PodName.podspec
4.注册pod trunk
$ pod trunk register orta@cocoapods.org 'Eric_jun' --description='macbook pro'
5.发布到pod trunk
pod trunk push [NAME.podspec]
该命令在包含有.podspec文件的目录下执行
6.更新pod库
pod setup
如果pod trunk push成功后无法pod search到自己的库,可执行该命令。
让自己写的项目支持Cocoapods管理的更多相关文章
- CocoaPods学习系列2——使自己的项目支持CocoaPods管理
该篇记录使自己的项目支持CocoaPods管理. 要达到这一目的,需要如下步骤: 1.将自己的项目提交到github,添加开源协议license 2.添加podspec文件 3.验证podspec,成 ...
- 让自己的开源项目支持CocoaPods
测试的时候找个自己封装的方法或UI控件就可以了 这里用我刚封装的Redirect重定向的请求体为例 1, 在github上创建一个Redirect,重要:记得选择开源协议 (MIT)(如果木有GitH ...
- 利用cocoapods管理开源项目,支持 pod install安装整个流程记录(github公有库)
利用cocoapods管理开源项目,支持 pod install安装整个流程记录(github公有库),完成预期的任务,大致有下面几步: 1.代码提交到github平台 2.创建.podspec 3. ...
- CocoaPods管理的项目移植到别人电脑后找不到头文件
CocoaPods管理的项目移植到别人电脑后找不到头文件 在TARGETS -> Search Paths -> User Header Search Paths 中 写入 ${SRCRO ...
- <p>在我们的实际软件项目中,管理团队事实上比写代码或者实现一个客户的需求更为的有挑战性。由于编程实际上是和机器打交道,而和机器打交道,仅仅要你符合机器预定的逻辑,</p>
在我们的实际软件项目中,管理团队事实上比写代码或者实现一个客户的需求更为的有挑战性. 由于编程实际上是和机器打交道.而和机器打交道,仅仅要你符合机器预定的逻辑, 一步步迈向解决这个问题的道路上一点都不 ...
- .NET 5 尝鲜 - 开源项目TerminalMACS WPF管理端支持.NET 5
.NET 5 尝鲜 - 开源项目TerminalMACS WPF管理端支持.NET 5 一个使用 Prism 作为模块化框架.基于多个开源控件库作为UI控件选择.集成开源 UI 界面设计的 .NET ...
- cocoapods管理以及常遇到的问题
CocoaPods使用 安装成功啦,咱们来创建Podfile文件 //咱们先滚去项目的根目录,如果不会,你就先滚去看看shell命令教程吧 $ cd /Users/JamesGu/Desktop/Co ...
- Carthage 让项目支持及使用,第三方静态库转为动态库
Carthage介绍 具体使用,可以查看官网的,文档地址 https://github.com/Carthage/Carthage.如果看不懂英文,可以看一下官文的翻译:https://www.jia ...
- 利用CocoaPods管理本地工程和发布开源框架
发布自己三方框架 发布云端库 1.创建spec pod spec create xxx 2.编辑spec s.name:名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称 ...
随机推荐
- scrapy使用PhantomJS爬取数据
环境:python2.7+scrapy+selenium+PhantomJS 内容:测试scrapy+PhantomJS 爬去内容:涉及到js加载更多的页面 原理:配置文件打开中间件+修改proces ...
- angular4.0微信oAuth第三方认证的正确方式
当我们的项目运行在微信端时,用到oAuth第三方认证.问题来了,在ng4中微信认证应该放在哪里呢? 开始项目的时候,我将oAuth认证放在了每个页面模版中,发现返回历史页的时候,需要返回两次. 这个问 ...
- Java中的移动和复制
public static boolean Move(File srcFile, String destPath) { // Destination directory File dir = new ...
- SpringMVC handleMapping 处理器映射器 属性清单
映射器的属性清单 defaultHandler 在映射与所有处理器都不匹配的情况下,指定默认的处理器(处理器即你定义的Controller(action)类) order ...
- python之Character string
1.python字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串,l Python不支持单字符类型,单字符也在Python也是作为一个字符串使用. ...
- SAP的这三款CRM解决方案,您能区分清楚么
我的一位同事, John Burton, 在2017年12月底写过一篇博文:Explaining SAP's portfolio of "CRM Service" related ...
- 转JS--通过按钮直接把input或者textarea里的值复制到粘贴板里
document.activeElement属性为HTML 5中新增的document对象的一个属性,该属性用于返回光标所在元素.当光标未落在页面中任何元素内时,属性值返回body元素. setSel ...
- 阿里深度兴趣网络模型paper学习
论文地址:Deep Interest Network for Click-Through Rate ... 这篇论文来自阿里妈妈的精准定向检索及基础算法团队.文章提出的Deep Interest Ne ...
- 用vue官方提供的模板vue-cli搭建一个helloWorld案例
安装环境 安装node.js并配置环境变量 安装淘宝镜像,npm install -g cnpm --registry=https://registry.npm.taobao.org 安装webpac ...
- python中的slice用法
同事在网上做题碰到的 >>> items = [0,1,2,3,4,5,6,7,8,9] >>> a = _____(2,4) >>> items ...
