该篇记录使自己的项目支持CocoaPods管理。

要达到这一目的,需要如下步骤:

1.将自己的项目提交到github,添加开源协议license

2.添加podspec文件

3.验证podspec,成功后提交到github

4.注册CocoaPods的trunk账号

5.将podspec文件提交到trunk

接下来,以我的一个开源组件ALWTitleTabBar为例,逐步记录:

1.将自己的项目提交到github,添加开源协议license

该步骤的操作,如果有不清楚的,可参考我之前的git使用介绍的文章。

2.添加podspec文件

该步骤是核心操作。

使用终端cd到与类库根目录同级的目录。创建podspec文件后,应该类似如下文件结构:

ALWTitleTabBar目录下仅有类库资源及文件。

如果还想提供demo,在这个同级目录下创建demo的专用文件夹即可。但不建议加入CocoaPods管理。

开始创建podspec文件:

在终端依次输入:

pod spec create ALWTitleTabBar

vi ALWTitleTabBar.podspec

即可创建成功并进入编辑状态(或者直接一步到位,输入: vim ALWTitleTabBar.podspec)

编辑podspec文件是最重要也稍微麻烦的操作,因为该文件需要配置一系列参数,然后才能使类库发布的各个版本被正确依赖使用。

完整的配置说明,可查阅podspec的配置指南:https://guides.cocoapods.org/syntax/podspec.html#specification

在此,只展示使用的部分:

  1. Pod::Spec.new do |s|
  2. s.name = 'ALWTitleTabBar'
  3. s.version = '1.0.0'
  4. s.license = { :type => 'MIT' }
  5. s.homepage = 'https://github.com/ALongWay/ALWTitleTabBar'
  6. s.authors = { 'ALongWay' => '370381830@qq.com' }
  7. s.platform = :ios, '7.0'
  8. s.summary = 'A configurable and brief title tab bar.'
  9. s.source = { :git => 'https://github.com/ALongWay/ALWTitleTabBar.git', :tag => '1.0.0' }
  10. s.source_files = 'ALWTitleTabBar/**/*.{h,m}'
  11. s.frameworks = 'UIKit', 'Foundation'
  12. end

大多配置都可以自说明,特别注意source_files参数,value内容的ALWTitleTabBar指的就是与podspec文件同级的文件夹。

然后点击ESC键,在终端输入:

:wq

就可以保存退出了。

3.验证podspec,成功后提交到github

编辑完成后,需要编译类库和验证podspec文件。

输入:

pod lib lint ALWTitleTabBar.podspec

等待验证结果,如果失败了,需要一直修改到验证通过。

在这个示例组件中,如果将ALWTitleTabBarConfiguration.h中的UIKit引用移动到ALWTitleTabBar,重新验证,将提示前者中的UIColor等类型无效。

如果验证通过,就可以将podspec文件提交到github了。

在此,需要注意tag的提交。因为podspec文件中有对应的version,所以要保证github上希望被依赖的类库版本号,即用tag标记的发布版本号,与当前即将发布的podspec文件的version一致。

这个tag可以在github的该项目首页——》release栏里去设置,也可以在终端或者客户端提交时候设置。

4.注册CocoaPods的trunk账号

上一步已经验证好了podspec,最终需要发布到CocoaPods的trunk中,才能被搜索到和依赖使用。

所以,如果没有注册过trunk账号,需要先注册,在终端输入:

pod trunk register 370381830@qq.com ALongWay

也就是注册邮箱和用户名

注册成功后,可以查看信息,输入:

pod trunk me

当然,trunk还有其他指令,可以输入pod trunk --help查看更多。

5.将podspec文件提交到trunk

最后一步了。

保证cd到podspec文件所在目录,在终端输入:

pod trunk push

应该是可以等到成功的提示。

至此,已经使自己的项目支持了CocoaPods管理。

在终端输入:

pod search ALWTitleTabBar

可以看到如下输出:

补充一点:

搜索完成以后,需要退出,先点击ESC键,之后不管显不显示内容,直接输入:

:wq

则自动退出。

CocoaPods学习系列2——使自己的项目支持CocoaPods管理的更多相关文章

  1. CocoaPods学习系列3——创建和使用私有Pods

    前一篇记录了使自己的项目支持CocoaPods管理的过程,核心的步骤就是podspec的配置和提交.这个文件,记录了类库的详细信息,用于对类库的集成. 需要注意的一点,上一篇创建的podspec文件, ...

  2. Dubbo学习系列之九(Shiro+JWT权限管理)

    村长让小王给村里各系统来一套SSO方案做整合,隔壁的陈家村流行使用Session+认证中心方法,但小王想尝试点新鲜的,于是想到了JWT方案,那JWT是啥呢?JavaWebToken简称JWT,就是一个 ...

  3. Shiro学习(23)多项目集中权限管理

    在做一些企业内部项目时或一些互联网后台时:可能会涉及到集中权限管理,统一进行多项目的权限管理:另外也需要统一的会话管理,即实现单点身份认证和授权控制. 学习本章之前,请务必先学习<第十章 会话管 ...

  4. 让自己的开源项目支持CocoaPods

    测试的时候找个自己封装的方法或UI控件就可以了 这里用我刚封装的Redirect重定向的请求体为例 1, 在github上创建一个Redirect,重要:记得选择开源协议 (MIT)(如果木有GitH ...

  5. 让自己写的项目支持Cocoapods管理

    学会使用别人的 Pods 依赖库以后, 你一定对创建自己的依赖库很有兴趣吧,现在我们一起来制作自己的Pods依赖库. 1.创建自己的 github 仓库 上图中标识出了6处地方 Repository ...

  6. CocoaPods学习系列4——进阶用法

    这篇文章,记录一下CocoaPods的进阶用法. 进阶用法主要体现在.podspec文件和Podfile的配置上. .podspec文件的进阶配置 以官方的一个.podspec文件示例细说: Pod: ...

  7. CocoaPods学习系列1——安装和常规使用

    CocoaPods是一个Github上的开源项目,目前已经成为iOS开发过程中标准的依赖库管理器,提供了一种对第三方类库简单优雅的集成和管理方案. 其工作原理,是将第三方类库统一管理到一个名为Pods ...

  8. Android+Jquery Mobile学习系列(3)-创建Android项目

    前两章分别对开发环境和Jquery Mobile基础知识进行了介绍,本章介绍创建一个Android项目,并使用WebView控件显示HTML数据. 首先创建一个Android Application项 ...

  9. .net转php laraval框架学习系列(四) 项目实战---View

    laravel的参考文档中view的讲解有些简单. 在实际项目开发中view的灵活性其实是非常大. 首先来看看laravel中的布局页 和asp.net mvc中有什么不同 <!DOCTYPE ...

随机推荐

  1. python抓取网页中的动态数据

    一.概念 网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的.所以也就引出了什么是动态数据的概念,动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到浏览器 ...

  2. python3连接外部Mysql

    前提条件,已经安装过MySQL(比如说以前web开发安装过MySQL) 1.安装PyMySQL pip install PyMySQL 2.测试 import pymysql as ps db = p ...

  3. 巨蟒python全栈开发-第15天 装饰器

    一.今日内容总览 关于函数的装饰器1.装饰器(重点,难点)(要求:反复写,代码不多但是很绕) 开闭原则:(比如,菜单是拆散的,一点点搞的,用友拆散自己的功能,以后就不用开发了) (1)对功能的扩展开放 ...

  4. css3的clip-path属性

    css3的clip-path属性 网上看到的都是因为2年前一个出名的网站引发了对该属性的研究.所以大概是2年前火了一阵子的属性.2016-09-10  23:54:00 直接开始总结它的用法: 2个基 ...

  5. log4j 日志相关

    1.log 打印异常信息 Logger logger = Logger.getLogger(LoggerTest.class);  //追踪产生此日志的类 Logger extends Categor ...

  6. django 多数据库时 ORM语句 选择数据库

    多数据库时ORM语句选择数据库 不需要save的操作: 查询(删除的话查询语句后面加一个.delete()即可,修改的话在后面加一个.update()即可): models.表名.objects.us ...

  7. STL中使用reverse_iterator时,如何正确使用erase函数

    假设有一个list容器,顺序存储了0-9一个10个整数.现在要使用reverse_iterator迭代器来查找值为8和5的元素,并且将这两个数删除.先来看以下的解决方法: #include <i ...

  8. dplyr快速入门

    RStudio Blog 介绍dplyr 包已发布 (Introducing dplyr), 此包将原本 plyr 包中的 ddply() 等函数进一步分离强化, 专注接受dataframe对象, 大 ...

  9. 第一课 C语言简明教程

    1序言: 1与Java.C#等高级语言相比,C语言使用简单但是也非常重要更容易出错,到目前为止基本上操作系统的内核代码超过百分之九十使用C语言完成,因此学好C语言是学好计算机这门课程的基础,特别是进入 ...

  10. Jconsle

    1. jconsole 远程连接: JConsole很好用,可以解决很多疑难杂症.但远程连接需要设置一下Java opt才可以使用.以下是步骤: 1). 在java opt下添加如下内容: 如果是无须 ...