Date
Nov. 21st, 2024
 
2024年 10月 21日

Post: CocoaPods 框架发布

CocoaPods 框架发布

Published 12:07 Jul 13, 2015.

Created by @ezra. Categorized in #Programming, and tagged as #iOS.

Source format: Markdown

Table of Content

做 iOS/macOS 的朋友, 相信都很熟悉 CocoaPods。那么怎样发布自己的框架到 CocoaPods 供别人使用呢?

假设我们要发布一个 MXDemoKit 的框架, 我们以最简单的情况进行说明, 首先在 Github 创建一个仓库, 克隆到本地。

# ~
$ cd ~/Desktop
$ git clone https://github.com/Meniny/MXDemoKit.git

接下来当然是编写代码并进行必要的测试。通常, 我们还会包含 README.mdLICENSE.gitignore 文件及一个示例工程。

然后, 重点来了 (敲黑板!), 我们还需要创建一个描述文件对这个框架进行说明。

格式及常用的配置信息有:

Pod::Spec.new do |s|
  s.name             = "MXDemoKit" # 框架名称
  s.version          = "1.0.0" # 版本号
  s.summary          = "A delightful framework written in Swift" # 描述
  s.description      = <<-DESC
                        MXDemoKit is a delightful framework for iOS/macOS/watchOS/tvOS platform written in Swift.
                        DESC
                        # 详细的说明, 可选

  s.homepage         = "https://github.com/Meniny/MXDemoKit" # 主页
  s.license          = 'MIT' # 开源协议
  s.author           = { "Meniny" => "Meniny@qq.com" } # 作者信息
  s.source           = { :git => "https://github.com/Meniny/MXDemoKit.git", :tag => s.version.to_s } # 代码的来源, 这里指定了一个git仓库中与前面版本号一致的tag, 也就是 tag 1.0.0
  s.social_media_url = 'https://meniny.cn/' # 社交媒体链接

  s.ios.deployment_target = '8.0' # iOS 支持的最低系统版本号
  s.osx.deployment_target = '10.10' # macOS 支持的最低系统版本号
  s.tvos.deployment_target = '9.0' # tcOS 支持的最低系统版本号
  s.watchos.deployment_target = '2.0' # watchOS 支持的最低系统版本号
  # 不支持的平台不需要设置deployment_target

  s.source_files = 'MXDemoKit/**/*{.h}','MXDemoKit/**/*{.swift}' # 有效的源文件, 指定哪些文件是被包含到框架中的, 使用相对路径
  s.public_header_files = 'MXDemoKit/**/*{.h}' # 指定公开的头文件
  s.frameworks = 'Foundation', 'UIKit' # 指定需要链接的系统框架
  s.dependency "Jsonify" # 指定你的框架所依赖的其他CocoaPods框架, 没有可以忽略
end

将这些配置信息保存到刚才克隆好的文件夹根目录中, 文件名为 框架名称.podspec, 本例中为 MXDemoKit.podspec

接下来, 为了避免不必要的麻烦, 在发布之前我们先进行验证:

# ~/Desktop
$ cd MXDemoKit
$ pod lib lint

这个操作可能会消耗一定的时间, 当你最终看到 框架名 passed validation. 提示后则表示通过了验证。如果出现错误和警告则需要按照实际情况进行修正, 并再次进行验证直到通过。

接着, 提交代码到远程仓库:

# ~/Desktop/MXDemoKit
$ git add .
$ git commit -m "new version"
$ git push

此外, 刚才在配置 .podspec 时也提到了, 需要创建与框架版本号一直的新 tag:

$ git tag 1.0.0
$ git push --tags

完成后, 我们进行最后一步, 将框架发布到 CocoaPods:

# ~/Desktop/MXDemoKit
$ pod trunk push

当然, 出于各种原因, 你可能会存在一些警告信息不能及时解决, 对于这种情况, 你需要多使用 --allow-warnings 选项忽略这些警告:

# ~/Desktop/MXDemoKit
$ pod trunk push --allow-warnings

顺利的话, 等待一段时间后你会看到一个漂亮的提示信息:

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

 🚀  MXDemoKit (1.0.0) successfully published
 📅  July 13th, 07:00
 🌎  https://cocoapods.org/pods/MXDemoKit
 👍  Tell your friends!
-----------------------------------------------

现在, 你可以通过 Podfile 来使用这个框架了。

pod 'MXDemoKit'

删除版本/废弃框架

有些情况下, 你可能会希望删除某个已经发布的版本, 或者废弃整个框架。这时候,除了删除 git 仓库的特定 tag 或整个仓库外, 你还可以通过 pod 指令来进行操作。

要删除某个版本时:

pod trunk delete 框架名 版本号

这个操作需要在执行后再次输入 y 进行确认, 执行结束后, 某些情况下可能会产生一些错误, 这时你可以在执行 pod repo update 之后使用 pod search 框架名 搜索进行确认。

当你想要废弃这个框架时:

$ pod trunk deprecate 框架名
Pinned Message
HOTODOGO
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
开发、设计与写作皆为所长。
热爱苹果、钟情色彩。
随时恭候 垂询