向CocoaPods发布代码

Cocoapods是非常好用的一个iOS依赖管理工具,用它来管理和更新项目中的第三库使iOS开发更加方便。
使用别人优秀的代码在程序员开发过程中是非常常见的事,为别人贡献代码也是很有必要的事。
这篇文章是我总结向Cocoapods贡献代码的过程。我以自己一个非常非常简单的项目ARFPSStatus来记录这个过程。ARFPSStatus非常简单,是Swift写的在状态栏显示屏幕的FPS,源码只有一个Swift文件。

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

一、安装cocoapods

sudo gem install cocoapods --pre

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

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

三、在github上发布一个版本

点击这边的release:


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

创建podspec文件

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

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" => "[email protected]" }
  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
$ 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 [email protected]
    邮箱会收到一封确认邮件,确认成功:
  • 推送代码到Pod
    pod trunk push ARFPSStatus.podspec
    当然也可使用pod trunk push ARFPSStatus.podspec --allow-warnings来忽略一些不必要的警告。
    成功后:
$ 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,并安装。
target 'FPSDemo' douse dynamic frameworks
  use_frameworks!

  pod "ARFPSStatus" 

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

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

你可能感兴趣的:(向CocoaPods发布代码)