美文网首页
发布CocoaPods公有库

发布CocoaPods公有库

作者: 梦里桃花舞倾城 | 来源:发表于2019-04-28 16:13 被阅读0次

这里所有的演示都是以我项目来的。

1. 去github新建一个代码仓库

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

  • 打开终端, 将创建的代码仓库clone到本地 (这里可以直接使用终端git clone https://github.com/gouzyi/ZainSDK.git, 也可以使用git可视化工具。我用的sourcetree
  • 打开本地仓库ZainSDK,用Xcode新建一个工程ZainSDKExample注意项目是放在ZainSDK下的,把我们需要发布到CocoaPods的文件也一起放入。
  • 推送到Git远程仓库,这样我们的代码仓库基本上就OK了
1.png

2.创建spec 文件(create后面的名字就是需要上传到Cocoapods的库名)

  • 打开终端进入到上面的git本地仓库ZainSDK目录下。
  • 终端执行:pod spec create ZainSDK
  • 打开ZainSDK.podspec(这里提示一下:默认是用文本编辑器打开的。这里我们可以选择其他代开方式:Xcode, Atmo
  • 编辑podspec文件

一些常用的信息介绍:

name:框架名
version:当前版本(注意,是当前版本,假如你后续更新了新版本,需要修改此处)
summary:简要描述,在pod search ZCPKit的时候会显示该信息。
description:详细描述
homepage:页面链接
license:开源协议
author:作者
source:源码git地址
platform:支持最低ios版本
source_files:源文件(可以包含.h和.m)
public_header_files:头文件(.h文件)
resources:资源文件(配置的文件都会被放到mainBundle中)
resource_bundles:资源文件(配置的文件会放到你自己指定的bundle中)
frameworks:依赖的系统框架
vendored_frameworks:依赖的非系统框架
libraries:依赖的系统库
vendored_libraries:依赖的非系统的静态库
dependency:依赖的三方库

写好如下:


Pod::Spec.new do |spec|

  # 项目名
  spec.name         = "ZainSDK"
  # 版本号
  spec.version      = "0.0.1"
  # 简单描述
  spec.summary      = "ZainSDK是iOS日常开发常用的工具类"
  # 详细描述
  spec.description  = "包含UIView、UILabe、UIButton、NSString、UIColor...常用Extenions"
  # 项目的主页
  spec.homepage     = "https://github.com/gouzyi/ZainSDK"
  # 项目遵守的协议
  spec.license      = { :type => "MIT", :file => "LICENSE" }
  # 作者的邮箱
  spec.author       = { "zainguo" => "572249347@qq.com" }
  # 社交地址
  spec.social_media_url = "https://www.jianshu.com/u/b2d703ff4984"
  # 源码git地址
  spec.source       = { :git => "https://github.com/gouzyi/ZainSDK.git", :tag => spec.version }
  # spec.source_files  = "ZainSDK/**/*.{h,m}"
  # 源文件(可以包含.h和.m)
  spec.source_files  = 'ZainSDK/ZainSDKMacro.h'
  # 头文件(.h文件)
  spec.public_header_files = 'ZainSDK/ZainSDKMacro.h'
  # 是否支持ARC
  spec.requires_arc = true
  # 支持的版本
  spec.platform     = :ios, "8.0"

  spec.subspec 'ZainExtensions' do |e|
    e.source_files = 'ZainSDK/ZainExtensions/**/*'
    e.dependency 'MBProgressHUD'
    # 依赖的系统框架
    e.frameworks = 'UIKit'
  end

  spec.subspec 'NavigationBar' do |nav|

    nav.source_files = 'ZainSDK/NavigationBar/*.{h,m}'
    nav.dependency 'ZainSDK/ZainExtensions'

  end
  spec.subspec 'NetworkManager' do |net|
    net.source_files = 'ZainSDK/NetworkManager/*.{h,m}'
    net.dependency 'AFNetworking'
  end

end

source 常见写法

/// git commit -m =>"13287dd",讲pod版本与git仓库中的某一次提交绑定
spec.source = { :git => "https://github.com/gouzyi/ZainSDK.git", :commit => "13287dd" }

/// 将这个Pod版本与Git仓库中某个版本的comit绑定 
spec.source = { :git => "https://github.com/gouzyi/ZainSDK.git", :tag => 1.0.0 }

/// 将这个Pod版本与Git仓库中相同版本的comit绑定
spec.source = { :git => "https://github.com/gouzyi/ZainSDK.git", :tag => spec.version }

source_files资源文件目录:

# NavigationBar文件夹下的所有.h .m文件
nav.source_files = 'ZainSDK/NavigationBar/*.{h,m}'
# ZainExtensions所有路径下的所有匹配文件
e.source_files = 'ZainSDK/ZainExtensions/**/*'

3. 代码推送到GitHub,记得打上tag

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

git tag "0.0.1"  
git push --tags

4.校验podspec文件

编辑完podspec文件后,需要验证一下这个文件是否可用, 如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过XcodeWARNING是可以存在的,验证需要执行命令:(二选一)

注意:需要cd到当前的本地仓库ZainSDK目录下,执行

pod lib lint (从本地验证你的pod能否通过验证)
pod spec lint(从本地和远程验证你的pod能否通过验证)

如果这样就表示OK啦

success.png

下面是出错的样子

我们可以使用如下命令来查看更多信息。按照他说的来慢慢修改

pod lib lint --verbose

其他:

 pod lib lint --allow-warnings :表示验证时候,忽略警告
 pod lib lint --verbose :表示验证如果出错会显示更详细的错误信息
当出现"XXX passed validation" 表示成功,Warning可以忽略

5.注册CocoaPods账号

Cocoapods官网

终端输入:

pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air'

Example:

pod trunk register 572249347@qq.com 'Orta Therox' --description='macbook air'

输入完以后会提示已经发送了一个验证码到邮箱,你可以打开你的邮箱验证即可。打开邮件中的链接地址就OK了

查看注册信息

pod trunk me

发布自己的.podspeccocoapods

注意:是在当前的本地仓库ZainSDK目录下,执行

pod trunk push ZainSDK.podspec
complete.png

更新pod库

 pod setup

验证

pod search ZainSDK

如果出现这个:

[!] Unable to find a pod with name, author, summary, or description matching `ZainSDK`

因为刚提交后项目用pod search命令会搜不到,因为本地的索引没有更新,使用下面命令删除索引文件执行如下操作:

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

再次执行pod search ZainSDK 大功告成!

总结:要是遇到分层问题(subspec子组件),建议小伙伴们去下载AFNetworkingJKOCProjectTool看下.podspec文件。

题外话:

可以删除一个pod的特定版本来纠正意外推送。

pod trunk delete PODNAME VERSION
pod trunk delete ZainSDK 0.0.1

你也可以放弃整个pod和所有版本。

pod trunk deprecate PODNAME

为共有库添加或移除owners

pod trunk add-owner ZainSDK xxx@qq.com(即:pod trunk add-owner 库名 邮箱)

执行下面指令移除共有库owner:

pod trunk remove-owner ZainSDK xxx@qq.com(即:pod trunk remove-owner 库名 邮箱)

指令查看库当前状态,版本,所有人等

 pod trunk info ZainSDK

更新版本

  • 代码提交到git远程仓库
  • 打一个新的tag
  • 打开xxx.podspec文件,修改配置。和版本号
  • pod spec lint校验
  • pod trunk push xxx.podspec
  • pod setup
  • pod search xxx检查是否更新完成

参考文献:

利用cocoapods管理开源项目,支持 pod install安装整个流程记录(github公有库)

Cocoapods整理(三)——编写podspec文件

发布自己框架到CocoaPods

如何发布自己的开源框架到CocoaPods

cocoaPods之subspec子组件

iOS 开发创建CocoaPods公有库以及subspec分支功能

Cocopods组件化之podspec文件解析

cocoapods创建共有库过程中遇到的坑以及版本删除

[Cocoapods]项目添加Cocoapods支持遇到的坑

相关文章

  • 发布CocoaPods公有库

    这里所有的演示都是以我项目来的。 1. 去github新建一个代码仓库 github上创建项目仓库的时候记得创建L...

  • CocoaPods发布FrameWork公有库

    之前写过一篇幼儿园版的CocoaPods相关文章,最近又需要用到CocoaPods发布公有库。然而这次是发布公司的...

  • CocoaPods-发布公有库

    一、发布代码到CocoaPods的步骤 1.注册cocoa pods(已注册可跳过) 2.验证cocoapods ...

  • CocoaPods 公有库, 私有库的创建

    CocoaPods 公有库, 私有库的创建 * 公有库 创建远程公有库,我们是用trunk的方式 1.1: 注册C...

  • Cocoapods 发布自己的公有库

    四步走: 一、封装自己的轮子 创建自己的工程,编写代码。 pod lib create 工程名称 给自己的项目打上...

  • CocoaPods-4.发布公有库

    一. 发布代码到CocoaPods的步骤 注册cocopods(已注册可跳过) 验证cocopods 创建代码仓库...

  • pod私有库

    接着上两篇文章CocoaPods公有库和CocoaPods本地私有库,这篇就来讲解下CocoaPods远程私有库,...

  • CocoaPods本地私有库

    接着上一篇文章CocoaPods公有库,这篇就写下CocoaPods本地私有库,啥叫CocoaPods本地私...

  • CocoaPods远程私有库

    接着上两篇文章CocoaPods公有库和CocoaPods本地私有库,这篇就来讲解下CocoaPods远程私...

  • CocoaPods公有库

    0、制作条件 1、CocoaPods - version - 1.5.32、Sourcetree - ...

网友评论

      本文标题:发布CocoaPods公有库

      本文链接:https://www.haomeiwen.com/subject/ijqjnqtx.html