Fork me on GitHub

向CocoaPods发布代码

Cocoapods是非常好用的一个iOS依赖管理工具,用它来管理和更新项目中的第三库使iOS开发更加方便。
使用别人优秀的代码在程序员开发过程中是非常常见的事,为别人贡献代码也是很有必要的事。

这篇文章是我总结向Cocoapods贡献代码的过程。我以自己一个非常非常简单的项目ARFPSStatus来记录这个过程。ARFPSStatus非常简单,是Swift写的在状态栏显示屏幕的FPS,源码只有一个Swift文件。

来吧!🎉我试着为iOS开发贡献一点绵薄之力吧。🎉

一、安装cocoapods

1
sudo gem install cocoapods --pre

二、创建代码并上传代码到Github

就是要发布的代码了,具体怎么上传代码到Github上我就不重复了。

三、在github上发布一个版本

点击这边的release:

发布一个版本,假设是0.1.0:

创建podspec文件

常见一个<项目名称>.podspec文件,我这边就是ARFPSStatus.podspec文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Pod::Spec.new do |s|
s.name = "ARFPSStatus"
s.version = "0.1.0"
s.summary = "ARFPSStatus - Show FPS Status on StatusBar in Swift"
s.homepage = "https://github.com/andyRon/ARFPSStatus"
s.license = "MIT"
s.authors = { "andyron" => "rongming.2008@163.com" }
s.source = { :git => "https://github.com/andyRon/ARFPSStatus.git", :tag => "0.1.0" }
s.frameworks = 'Foundation', 'UIKit'
s.platform = :ios, '9.0'
s.source_files = 'ARFPSStatus/*'
s.requires_arc = true

end

  1. s.name – 项目名称,也就是别人使用Pod时使用的名字,需要唯一,可事先在Cocoapods上查询一下。
  2. s.version – 这是你 Pod 的版本。务必注意,它得和 Github release 的版本号相同,就是刚才发布的版本0.1.0。如果两者不匹配,就会报错。
  3. s.summary 和 s.description – 这两个变量最终会显示在 Cocoapods 页面上。请确保 description 比 summary 更长,否则将会报错。description不是必须的。
  4. s.homepage – 这是 Pod 源代码的 URL。
  5. s.author – 开发者信息,开发者名字和邮箱。
  6. s.source_files – 这是最重要的参数。不是所有Github项目中所有文件都需要提交到CocoaPods里,项目中可能有一些Demo、图片啊等,提交到CocoaPods的只需要源码,就是别人使用时最少所需的代码。
    例如,我需要提交的是ARFPSStatus/ARFPSStatus.swift文件,s.source_files就是ARFPSStatus/ARFPSStatus.swift,或者之后如果再在ARFPSStatus/目录中添加其他文件,s.source_files就可以是ARFPSStatus/*
    当然,还可以是其它一些形式。
    ARFPSStatus/*.swift
    ARFPSStatus/*.{swift,plist}

Podspec文件的详细语法规则可查看官网的Podspec Syntax Reference

验证项目

CocoaPods 需要验证项目有没有错误

  • pod lib lint
    1
    2
    3
    4
    5
    6
    7
    8
    $ pod lib lint

    -> ARFPSStatus (0.1.0)
    - WARN | [iOS] license: Unable to find a license file
    - WARN | xcodebuild: /Users/andyron/myfield/github/ARFPSStatus/ARFPSStatus/ARFPSStatus.swift:91:17: warning: variable 'label' was never mutated; consider changing to 'let' constant

    [!] ARFPSStatus did not pass validation, due to 2 warnings (but you can use `--allow-warnings` to ignore them).
    You can use the `--no-clean` option to inspect any issue.

如果想忽略警告,可使用--allow-warnings

  • $ pod lib lint --allow-warnings

发布

  • 创建 Trunk 账号
    关于Trunk可以查看为什么做 Trunk这篇文章
    创建 Trunk 账号很简单,只要一个邮箱。
    pod trunk register rongming.2008@163.com
    邮箱会收到一封确认邮件,确认成功:

  • 推送代码到Pod
    pod trunk push ARFPSStatus.podspec
    当然也可使用pod trunk push ARFPSStatus.podspec --allow-warnings来忽略一些不必要的警告。
    成功后:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ pod trunk push ARFPSStatus.podspec 
    Updating spec repo `master`

    --------------------------------------------------------------------------------
    🎉 Congrats

    🚀 ARFPSStatus (0.1.0) successfully published
    📅 September 28th, 11:33
    🌎 https://cocoapods.org/pods/ARFPSStatus
    👍 Tell your friends!
    --------------------------------------------------------------------------------

使用新发布的代码

发布成功和可能需要一段时间才能使用,可以到Cocoapods上查询。

  • 项目的Podfile文件中添加ARFPSStatus,并安装。

    1
    2
    3
    4
    5
    6
    target 'FPSDemo' douse dynamic frameworks
    use_frameworks!

    pod "ARFPSStatus"

    end
  • Pods项目会多出ARFPSStatus目录,里面的Support Files目录不是我添加的,是Cocoapods自动添加的一些相关文件。

参考:
基于 Swift 创建 CocoaPods 完全指南
Podspec Syntax Reference

坚持原创技术分享,您的支持将鼓励我继续创作!
  • 本文标题: 向CocoaPods发布代码
  • 本文作者: AndyRon
  • 发布时间: 2017年10月08日 - 13:53
  • 最后更新: 2018年09月16日 - 17:12
  • 本文链接: http://andyron.com/2017/ios-cocoapods-push.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!