发布开源框架到CocoaPods入坑指南

  • 我的原文博客地址: 发布开源框架到CocoaPods入坑指南
  • 在开发过程当中必定会用到一些第三方框架, 只要安装了CocoaPods, 而后经过pod install命令, 就能够集成框架到项目中了
  • 但是若是想要把本身的框架或者组件也开源出去, 让别人也可使用, 那该如何入手 ?
  • 对于CocoaPods还不是很了解的或者没有安装的童鞋, 可自行百度或者参考用CocoaPods作程序的依赖

搭建框架

建立仓库

  • CocoaPods项目的源码在Github上管理,因此第一步咱们须要建立一个属于本身的仓库
  • 根据图下图所示建立本身的项目

建立仓库

上传文件

  • 要开发框架必然就要上传文件, 这里推荐SourceTreeGitHub客户端, 固然也可使用终端命令上传
  • 使用git管理工具咱们这里暂不赘述, 不懂得能够自行百度
  • 终端使用git命令上传, 主要命令以下
//cd到当前文件夹
// 建立本地仓库
git init
// 添加名称为origin的远程链接
git remote add origin '你的github项目地址'
// 将本地代码加入本地仓库里
git add .
// 提交修改到本地仓库
git commit -m '你的修改记录'
// 推送master分支的代码到名称为origin的远程仓库
git push origin master
复制代码

建立Podspec描述文件

  • 该文件为Cocoapods依赖库的描述文件,每一个Cocoapods依赖库必须有且仅有那么一个描述文件
  • 简单地讲就是让CocoaPods搜索引擎知道你的代码的做者、版本号、源代码地址、依赖库等信息的文件
  • 文件名称要和咱们想建立的依赖库名称保持一致
pod spec create 框架名字

// 示例:
pod spec create TitanModel
复制代码
  • 该命令将在本目录产生一个名为TitanModel.podspec文件
  • 可用Sublime Text或者Atom打开该文件,里面已经有很是丰富的说明文档, 可是不少都是咱们不须要的
  • 官方Podspec文件的编写格式可参考 Podspec Syntax Reference
  • 下面介绍如何声明第三方库的代码目录和资源目录,还有该第三方库所依赖ios核心框架和第三方库
  • 去掉文件中的一些注释信息, 能够看到也就剩下如下内容了
Pod::Spec.new do |s|
  s.name         = "TitanModel"
  s.version      = "0.0.1"
  s.summary      = "A short description of TitanModel."
  s.description  = "这是详细的描述, 可是字数要比summary的字数多, 否则上传的时候回有警告提示, 我这么说你能明白了吗?不明白的话我也没办法了"
  s.homepage     = "https://github.com/CoderTitan/TitanModel"
  s.license      = "MIT"
  s.swift_version = "4.0"
  s.author             = { "CoderTitan" => "quanjunt@163.com" }
  s.source       = { :git => "https://github.com/CoderTitan/TitanModel.git", :tag => "#{s.version}" }
  s.source_files  = "Classes", "Classes/**/*.{h,m,swift}"
  s.exclude_files = "Classes/Exclude"
 
end
复制代码
  • s.name:名称,pod search搜索的关键词,注意这里必定要和.podspec的名称同样,不然报错
  • s.version:版本号,to_s:返回一个字符串
  • s.summary: 项目简短的简介
  • s.description: 这个是详细的描述, 要注意的是字数要比summary的长, 不然上传的时候可能会爆出警告
  • s.homepage: 项目主页地址
  • s.license: 许可证
  • s.author: 做者
  • s.source: 项目源码所在地址
  • 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: 依赖库,不能依赖未发布的库

source_files写法及含义html

"TitanModel"
"Classes/**/*.{h,m}"
复制代码
  • *表示匹配全部文件
  • *.{h,m}表示匹配全部以.h.m结尾的文件
  • **表示匹配全部子目录

将本身的项目打成tag

  • 由于cocoapods是依赖tag版本的,因此必须打tag,之后再次更新只须要把你的项目打一个tag,而后修改.podspec文件中的版本接着提交到cocoapods官方就能够了
  • 要注意的是, 这里提交的版本号要和TitanModel.podspec文件中的版本号一致
git tag "v0.0.1"  
git push --tags
复制代码

上传Podspec

  • Podspec修改完成后, 上传到服务器时, 咱们须要使用trunk进行上传
  • 首先要注册trunk, 在注册trunk以前,咱们须要确认当前的CocoaPods版本是否足够新。trunk须要pod0.33及以上版本,若是你不知足要求, 须要从新安装pod
  • 更新结束后,咱们开始注册trunk, 可参考官方文档Getting setup with Trunk
  • 终端输入如下命令
pod trunk register 邮箱地址 '用户名' --description='描述'

// 示例
pod trunk register quanjunt@163.com 'CoderTitan' --description='macbook'
复制代码

执行该命令后, 你的邮箱会受到一封邮件, 可是邮件要到垃圾邮件中才能找到, 打开邮件找到邮件中的网址并打开ios

image

若是打开邮件中的连接和下面的页面同样, 则表示注册成功git

注册成功

最后输入以下命令github

pod trunk push TitanModel.podspec
复制代码

时间较长,耐性等待,大概5-10分钟, 成功后结果以下json

trunk

  • 上面图片中能够看到执行了Updating spec repo master命令, 该命令主要就是更新本地的Specs文件
  • 查看文件夹位置, 打开访达文件夹, Shift+command+G快捷键, 打开前往文件夹操做, 输入以下目录便可查看
~/.cocoapods/repos/master/Specs
复制代码

测试本身的cocoapods

  • 终端输入pod search TitanModel查看
  • 可是若是输入上述命令后, 终端输出以下错误
[!] Unable to find a pod with name, author, summary, or description matching `TitanModel`
复制代码

这是由于你的框架已经上传, 可是你的本地的搜索文件search_index.json没有更新, 因此搜索不到, 能够执行下面命令删除search_index.json文件swift

rm ~/Library/Caches/CocoaPods/search_index.json
复制代码
  • 也能够直接找到该文件删除
  • 查看文件夹位置, 打开访达文件夹, Shift+command+G快捷键, 打开前往文件夹操做, 输入以下目录便可查看
~/Library/Caches/CocoaPods/
复制代码

搜索成功bash

search

总结

最后对上述涉及到的终端命令作一个简单的总结服务器

终端命令

  1. 开源库发布以后,须要给项目打上tag
git tag "v0.0.1"  
git push --tags
复制代码
  1. 进入到项目根目录下,建立podspec文件
pod spec create TitanModel
复制代码
  1. 编辑podspec文件中的相关信息,有两个比较重要的地方s.sources.source_files, 修改完成后, 验证是否有误
pod spec lint TitanModel.podspec
复制代码
  1. 注册pod trunk
pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air'
复制代码
  1. 发布到trunk
pod trunk push TitanModel.podspec
复制代码
  1. 搜索发布的框架
pod search TitanModel
复制代码
相关文章
相关标签/搜索