本文讲的是手把手教你发布自己的CocoaPods开源库,发布自己的cocoapods开源库按照以下步骤,良心制作,包教包会!!

下面我会通过一个名为IFMMenu的项目来讲解一下整个过程。

1.写好代码,上传到github

github上创建项目仓库的时候记得创建LICENSE(许可证/授权)文件,此文件必须要有。

github上创建项目仓库

2.将自己的项目打成tag

因为cocoapods是依赖tag版本的,所以必须打tag,以后再次更新只需要把你的项目打一个tag,然后修改.podspec文件中的版本接着提交到cocoapods官方就可以了,提交命令请看下面

  1. //为git打tag, 第一次需要在前面加一个v
  2. git tag "v1.0.0"
  3. git push --tags

3.注册CocoaPods

trunk需要CocoaPods 0.33版本以上,用pod --version命令查看版本,如果版本低,需要升级。

  1. pod --version
  2. //版本低于0.33
  3. sudo gen install cocoapods
  4. pod setup

已经注册过的不需要注册,怎么看自己有没有注册

  1. pod trunk me

pod trunk me信息

若未注册,执行以下命令,邮箱以及用户名请对号入座。用户名我使用的是Github上的用户名。

  1. // 加上--verbose可以输出详细错误信息,方便出错时查看。
  2. pod trunk register example@example.com 'liugangios' --verbose

注册完成之后会给你的邮箱发个邮件,进入邮箱邮件里面有个链接,需要点击确认一下。

注册完成后使用pod trunk me检验注册是否成功。

4.创建.podspec

cd到你项目的目录,执行命令

  1. pod spec create IFMMenu

5.编辑.podspec

创建好后,打开.podspec,删除注释, 前面有#的为注释,也可以用以下代码替换,然后编辑自己的库信息。

  1. Pod::Spec.new do |s|
  2. s.name = 'IFMMenu'
  3. s.version = '1.0.2'
  4. s.authors = { 'liugangios' => 'example@example.com' }
  5. s.homepage = 'https://github.com/liugangios/IFMMenu'
  6. s.summary = 'a dropdown menu for ios like wechat homepage.'
  7. s.source = { :git => 'https://github.com/liugangios/IFMMenu.git',
  8. :tag => s.version.to_s }
  9. s.license = { :type => "MIT", :file => "LICENSE" }
  10. s.platform = :ios, '7.0'
  11. s.requires_arc = true
  12. s.source_files = 'IFMMenu'
  13. s.public_header_files = 'IFMMenu/*.h'
  14. s.ios.deployment_target = '7.0'
  15. end
  • s.name:名称,pod search搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错
  • s.version:版本号,to_s:返回一个字符串
  • s.author:作者
  • s.homepage:项目主页地址
  • s.summary: 项目简介
  • s.source:项目源码所在地址
  • s.license:许可证
  • s.platform:项目支持平台
  • s.requires_arc: 是否支持ARC
  • s.source_files:需要包含的源文件
  • s.public_header_files:需要包含的头文件
  • s.ios.deployment_target:支持的pod最低版本

其他一些非必要字段

  • s.social_media_url:社交网址
  • s.resources:资源文件
  • s.dependency:依赖库,不能依赖未发布的库
  1. s.license= { :type => “MIT”, :file => “LICENSE” }

这里建议这样写,如果写别的会报警告,导致后面一直提交失败。

source_files写法及含义

  1. "IFMMenu/*
  2. "IFMMenu/IFMMenu/*.{h,m}"
  3. "IFMMenu/**/*.h"

*表示匹配所有文件

*.{h,m}表示匹配所有以.h和.m结尾的文件

**表示匹配所有子目录

s.source常见写法

  1. s.source = { :git => "https://github.com/liugangios/IFMMenu.git", :commit => "68defea" }
  2. s.source = { :git => "https://github.com/liugangios/IFMMenu.git", :tag => 1.0.0 }
  3. s.source = { :git => "https://github.com/liugangios/IFMMenu.git", :tag => s.version }
  • commit => "68defea" 表示将这个Pod版本与Git仓库中某个commit绑定
  • tag => 1.0.0表示将这个Pod版本与Git仓库中某个版本的comit绑定
  • tag => s.version表示将这个Pod版本与Git仓库中相同版本的comit绑定

6.验证.podspec

到此检查一下你工程中有以下文件:

  • 你的项目,
  • .podspec文件,
  • LICENSE文件

项目内文件

使用以下命令测试本地.podspec文件是否存在语法错误。

  1. pod spec lint IFMMenu.podspec --verbose

7.发布

  1. pod trunk push IFMMenu.podspec

时间较长,耐性等待,大概5-10分钟,发布成功后会有以下提示

发布成功截图

8.测试自己的cocoapods

这个时候使用pod search搜索的话会提示搜索不到,可以执行以下命令更新本地search_index.json文件

  1. rm ~/Library/Caches/CocoaPods/search_index.json

然后

  1. pod search IFMMenu

该命令会重新创建search_index.json文件,5-10分钟,耐性等待

搜索结果

完整命令

  1. git tag "v1.0.0"
  2. git push --tags
  3. pod trunk register example@example.com 'liugangios' --verbose
  4. pod trunk me
  5. pod spec create IFMMenu
  6. //编辑 IFMMenu.podspec
  7. pod spec lint IFMMenu.podspec
  8. pod trunk push IFMMenu.podspec
  9. rm ~/Library/Caches/CocoaPods/search_index.json
  10. pod search IFMMenu

报错处理

  1. [!] Unable to accept duplicate entry for: XXXXX (1.0.0)

意思是:不能接受同一版本的提交

解决方案:

1、执行如下命令

  1. git tag 1.0.1
  2. git push --tags

2、修改XXXX.podspec文件中的内容

  1. s.version = "1.0.1"
  2. s.source = { :Git => "https://github.com/xxx/xxx.git", :tag => "1.0.1" }

3、执行命令pod spec lint、pod trunk push 库名.podspec验证并提交到CocoPods


本文作者:佚名
来源:51CTO
原文标题:手把手教你发布自己的CocoaPods开源库

手把手教你发布自己的CocoaPods开源库相关推荐

  1. 【原】iOS:手把手教你发布代码到CocoaPods(Trunk方式)

    概述 关于CocoaPods的介绍不在本文的主题范围内,如果你是iOS开发者却不知道CocoaPods,那可能要面壁30秒了.直奔主题,这篇文章主要介绍如果把你的代码发布到CocoaPods代码库中, ...

  2. iOS:手把手教你发布代码到CocoaPods(Trunk方式)

    概述 关于CocoaPods的介绍不在本文的主题范围内,如果你是iOS开发者却不知道CocoaPods,那可能要面壁30秒了.直奔主题,这篇文章主要介绍如果把你的代码发布到CocoaPods代码库中, ...

  3. Python编程|手把手教植物大战僵尸,代码开源

    前言 如题,手把手教Python实现植物大战僵尸游戏,代码简单易学,无需额外安装Python包,只要有pygame即可,文末获取全部素材及源代码~ 视频演示效果:https://www.bilibil ...

  4. 引入yml依赖包_手把手教你发布 Python 项目开源包

    编译:机器之心,作者:Gabriel Lerner.Nathan Toubiana 好不容易码了个 python 项目,是不是很兴奋?那么怎么把这个项目发出去让大家看到呢?本文作者写了一份在 GitH ...

  5. 【小白向】手把手教你发布自己写的HTML静态网页

    相对于C++.JAVA等编程语言的复杂难学,HTML/CSS/JS可以说是对刚接触计算机的同学最友好的编程语言了.特别是随着主流浏览器都支持了HTML5/CSS3,就算是新手, 只要费点心思,也容易就 ...

  6. 手把手教你发布一个Python包

    本文主题如下: 编写一个包(Python 源代码),但不是本文的重点. 编译包,观察编译后的文件. 发布包,发布的包可以有多种类型. 如何在 Pypi 中查看已发布的包. 注意: 本文编写的包在 Py ...

  7. php composer源码打包,手把手教你发布自己的 Composer 包

    一.前言 Composer 是 PHP 用来管理依赖(dependency)关系的工具.我们不仅要学会使用别人提供的包,更要学会制作和分享自己的软件包,下面演示如何创建一个自己的 Composer 包 ...

  8. 手把手教你写C语言的动态库的开发

    前言 动态库的概念: 动态库提供了一种方法,使进程可以调用不属于其可执行代码的函数.函数的可执行代码位于一个 DLL 文件中, 该 DLL 包含一个或多个已被编译.链接并与使用它们的进程分开存储的函数 ...

  9. css加号图标_手把手教你打造一个纯CSS图标库

    来,干了这碗安利 写这篇文章的目的其实就是为了安利一下我的图标库: 主题说完了,下面进入正题. 在web开发中,我们经常要用到一些小图标(加减勾叉等).通常做法就两种: 直接使用图片: 使用css/s ...

最新文章

  1. SQL Server 复制需要有实际的服务器名称才能连接到服务器
  2. SVM支持向量机——核函数、软间隔
  3. 调用微信和支付宝调三方接口扫描二维码?
  4. Flowable 数据库表结构 ACT_ID_GROUP
  5. php+js实现弹幕,jquery.barrager.js-专业的网页弹幕插件
  6. Multi-thread--多线程运行实例
  7. HALCON:图像采集之同步采集(synchronous)与异步采集(asynchronous)
  8. 20170724 Airflow官网资料学习
  9. 信号链模拟芯片是什么?
  10. ckeditor富文本解决文段首行缩进问题
  11. 【EasyRL学习笔记】第五章 Proximal Policy Optimization 近端策略优化算法
  12. java心得!--很好的java学习历程(转自张国宝)
  13. Matlab之随机森林TreeBagger
  14. python tkinter Button的使用
  15. solr搜索之搜索精度问题我已经尽力了!!!
  16. qt弹窗界面模态设置
  17. c语言sizeof char,sizeof 你真的弄明白了吗?来看看这个例子
  18. 提取lbp特征java代码_目标检测的图像特征提取之_LBP特征
  19. 智能电表怎么实现远程抄表
  20. QUV灯管-UVA340,UVB313,UVC灯管Q-SUN氙弧灯灯管和滤光器介绍

热门文章

  1. 4_Shell语言———脚本概述
  2. 【转】MFC 各类型相互转换
  3. wordpress自动批量定时发布插件 DX-auto-publish
  4. 一个权限树的设计与实现
  5. 3 关于数据仓库维度数据处理的方法探究系列——缓慢变化维概述和原理
  6. jquery php 异步图片上传实例,php结合jquery异步上传图片(ajaxSubmit)
  7. XamarinSQLite教程在Xamarin.Android项目中定位数据库文件
  8. SSH服务审计工具ssh-audit
  9. 服务器SSL/TLS快速检测工具TLLSSLed
  10. 分享Kali Linux 2016.2第45周VMware虚拟机