CocoaPods学习系列2——使自己的项目支持CocoaPods管理
该篇记录使自己的项目支持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
在此,只展示使用的部分:
Pod::Spec.new do |s|
s.name = 'ALWTitleTabBar'
s.version = '1.0.0'
s.license = { :type => 'MIT' }
s.homepage = 'https://github.com/ALongWay/ALWTitleTabBar'
s.authors = { 'ALongWay' => '370381830@qq.com' }
s.platform = :ios, '7.0'
s.summary = 'A configurable and brief title tab bar.'
s.source = { :git => 'https://github.com/ALongWay/ALWTitleTabBar.git', :tag => '1.0.0' }
s.source_files = 'ALWTitleTabBar/**/*.{h,m}'
s.frameworks = 'UIKit', 'Foundation'
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管理的更多相关文章
- CocoaPods学习系列3——创建和使用私有Pods
前一篇记录了使自己的项目支持CocoaPods管理的过程,核心的步骤就是podspec的配置和提交.这个文件,记录了类库的详细信息,用于对类库的集成. 需要注意的一点,上一篇创建的podspec文件, ...
- Dubbo学习系列之九(Shiro+JWT权限管理)
村长让小王给村里各系统来一套SSO方案做整合,隔壁的陈家村流行使用Session+认证中心方法,但小王想尝试点新鲜的,于是想到了JWT方案,那JWT是啥呢?JavaWebToken简称JWT,就是一个 ...
- Shiro学习(23)多项目集中权限管理
在做一些企业内部项目时或一些互联网后台时:可能会涉及到集中权限管理,统一进行多项目的权限管理:另外也需要统一的会话管理,即实现单点身份认证和授权控制. 学习本章之前,请务必先学习<第十章 会话管 ...
- 让自己的开源项目支持CocoaPods
测试的时候找个自己封装的方法或UI控件就可以了 这里用我刚封装的Redirect重定向的请求体为例 1, 在github上创建一个Redirect,重要:记得选择开源协议 (MIT)(如果木有GitH ...
- 让自己写的项目支持Cocoapods管理
学会使用别人的 Pods 依赖库以后, 你一定对创建自己的依赖库很有兴趣吧,现在我们一起来制作自己的Pods依赖库. 1.创建自己的 github 仓库 上图中标识出了6处地方 Repository ...
- CocoaPods学习系列4——进阶用法
这篇文章,记录一下CocoaPods的进阶用法. 进阶用法主要体现在.podspec文件和Podfile的配置上. .podspec文件的进阶配置 以官方的一个.podspec文件示例细说: Pod: ...
- CocoaPods学习系列1——安装和常规使用
CocoaPods是一个Github上的开源项目,目前已经成为iOS开发过程中标准的依赖库管理器,提供了一种对第三方类库简单优雅的集成和管理方案. 其工作原理,是将第三方类库统一管理到一个名为Pods ...
- Android+Jquery Mobile学习系列(3)-创建Android项目
前两章分别对开发环境和Jquery Mobile基础知识进行了介绍,本章介绍创建一个Android项目,并使用WebView控件显示HTML数据. 首先创建一个Android Application项 ...
- .net转php laraval框架学习系列(四) 项目实战---View
laravel的参考文档中view的讲解有些简单. 在实际项目开发中view的灵活性其实是非常大. 首先来看看laravel中的布局页 和asp.net mvc中有什么不同 <!DOCTYPE ...
随机推荐
- 【BZOJ4723】[POI2017]Flappy Bird DP
[BZOJ4723][POI2017]Flappy Bird Description <飞扬的小鸟>是一款风靡的小游戏.在游戏中,小鸟一开始位于(0,0)处,它的目标是飞到横坐标为X的某个 ...
- jQuery-实现图片的放大镜显示效果
jQuery-实现图片的放大镜显示效果 by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/word ...
- 火狐 a 标签 download 属性,要在 a 标签添加到页面中才生效;
在 chrome 中,如果需要设置点击下载文件,需要创建一个 a 标签,指定 download 属性和 href 属性即可, var aLink = document.createElement('a ...
- 【Charles】使用教程+破解+Windows版本https乱码+https证书安装注意
一.使用教程参考: 这一篇就够了,其他都是大同小异.Windows版和MAC版使用没太多区别. Charles 从入门到精通 | 唐巧的博客 https://blog.devtang.com/2015 ...
- 《挑战程序设计竞赛》2.5 最短路 AOJ0189 2249 2200 POJ3255 2139 3259 3268(5)
AOJ0189 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0189 题意 求某一办公室到其他办公室的最短距离. 多组输入,n表示 ...
- 安装 oracle 11g 发行版 出现错误:由于以下错误,Enterprise Manager配置失败,启动Database Control时出错
解决方案如下进入dos(1)查看dbconsole状态:emctl status dbconsole 显示:Environment variable ORACLE_SID not defined. P ...
- PHP中Trait详解及其应用
w PHP中Trait详解及其应用 - 开发者日常 - SegmentFaulthttps://segmentfault.com/a/1190000008009455
- Java基础 - 面向对象 - 类方法传参
调用方法时可以给该方法传递一个或多个值,传给方法的值叫实参,在方法内部,接收实参的变量叫做形参,形参的声明语法与变量的声明语法一样.形参只在方法内部有效. Java中方法的参数主要有3种,分别为值参数 ...
- c++编译/连接/运行
1.gcc命令&makefile语法&makefile编写: https://www.cnblogs.com/ycloneal/p/5230266.html 2.头文件&库文件 ...
- 洛谷 P2300 合并神犇
洛谷 听说这题可以\(n^2\)水过去,不过这里介绍一种\(O(n)\)的做法. \(f[i]\)为第\(1-i\)位合并的次数. \(pre[i]\)为第\(1-i\)位最末尾的数. \(j\)为满 ...