-
GitHub上创建项目
- 项目拉到本地
git clone https://github.com/wxm6099/BMToastView
-
提交框架源码和demo
git add BMToastView
git add BMToastViewDemo
git commit -m 'add BMToastView and BMToastViewDemo'
git push
- 创建 podspec 文件
打开终端,cd到项目文件夹,执行一下命令( BMToastView换成你的框架名称)
pod spec create BMToastView
执行完毕项目目录中会生成一个 .podspec 的文件。
- 编辑 podspec 文件
用编辑器打开 .podspec 的文件
Pod::Spec.new do |s|
s.name = 'BMToastView'
s.version = '1.0.0'
s.summary = '这部分是搜索框架时候显示的介绍'
s.homepage = 'https://github.com/Bobo168/BMToastView'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'BoboMa' => '996815278@qq.com' }
s.social_media_url = 'http://weibo.com/bobo_Ma'
s.platform = :ios
s.ios.deployment_target = '9.0'
s.swift_version = '4.0'
s.source = { :git => 'https://github.com/Bobo168/BMToastView.git', :tag => s.version }
s.source_files = 'BMToastView/*.{h,m}'
s.resource_bundle = { 'BMToastView' => ['Resources/**/*.xcassets'] }
s.resource = 'xxx/xxx.bundle'
s.ios.vendored_frameworks = 'xxx/xxx.framework'
s.frameworks = 'UIKit'
s.static_framework = true
s.dependency 'AFNetworking'
s.subspec 'GroupName' do |s|
...
end
end
各字段含义 x x x地方是需要修改的内容
s.name = 'xxx' :框架名称,pod search 搜索的关键词,一定要和 .podspec 文件的名称一样,否则验证报错。(必须)
s.version = 'xxx' :框架版本号。(必须)
s.summary = 'xxx' : pod search 搜索框架时,显示的框架简介。(必须)
s.homepage = 'xxx' :项目主页地址.(必须)
s.license = { :type => 'MIT', :file => 'LICENSE' } :这里就这样写不用修改。(必须)
s.author = { 'xxx' => 'xxx' } :作者,前面填英文名,后面填个人邮箱。(必须)
s.social_media_url = 'xxx' :社交网址,填的是我的微博地址。
s.platform = :ios :所属平台,这边不用更改。(必须)
s.ios.deployment_target = '9.0' :最低支持的 iOS 版本(必须)
s.swift_version = '4.0' :如果是 Swift 的话指定 Swift 编译版本
s.source = { :git => 'xxx', :tag => s.version } :GitHub 项目的仓库地址,这里只支持 HTTPS ,不支持 SSH 。(必须)
s.source_files = 'xxx/*.{h,m}' :要添加 CocoaPods 支持的文件路径。
几种写法:
s.source_files = 'xxx/*'
s.source_files = 'xxx/*.{h,m}'
s.source_files = 'xxx/**'
'*':表示匹配所有文件
'*.{h,m}':表示匹配所有以 .h 和 .m 结尾的文件
'**':表示匹配所有子目录
s.resource_bundle = { 'xxx' => ['xxx/**/*.xcassets'] } :要添加 CocoaPods 支持的图片资源,这个是我后补的所以 Demo 截图中没有这个,可以根据自己需求写。
如果要在主工程中使用 pod 中的图片,方法如下:
// 假如 podspec 中定义的 Bundle 名字为 TestBundle
s.resource_bundle = { 'TestBundle' => ['xxx/**/*.xcassets'] }
// 例如:
let url = Bundle(for: View.self).resourceURL!
let bundle = Bundle(url: url.appendingPathComponent("TestBundle.bundle"))
let image = UIImage(named: "imageName", in: bundle, compatibleWith: nil)
s.resource = 'xxx/xxx.bundle' :用于引入自己打包的bundle
s.ios.vendored_frameworks = 'xxx/xxx.framework' :用于引入自己打包的framework
s.frameworks = 'UIKit':用于引入官方的 framework
s.static_framework = true:用于声明包含静态库
s.dependency 'xxx' :项目依赖的其他 pod 库,不能依赖未发布的库,版本号可以不写。
多个依赖可以这样写:
s.dependency 'xxx'
s.dependency 'xxx'
s.dependency 'xxx'
指定版本可以这样写:
s.dependency 'xxx', '1.0.0'
s.subspec 'xxx' do |s|
end
表示建立一个名字为 xxx 的子文件夹,可以将文件分类,不需要可以不写,里面写法和外面是一样的,例如:
s.subspec 'xxx' do |s|
s.source_files = 'xxx/*.{h,m}'
s.resource_bundle = { 'xxx' => ['xxx/**/*.xcassets'] }
end
注意:不同子文件夹下 source_files 中的文件是单独编译的,如果文件中引入了别的子文件夹下的代码是编译不通过的。
修完完成后,command + s 保存
- 验证 podspec 文件
用终端 cd 到你的项目目录,终端没关就直接执行以下命令:
pod lib lint
如果是如下图1提示只有 warning 错误,并提示 but you can use '--allow-warnings' to ignore them 的话,就执行以下命令忽略 warning 来验证:
pod lib lint --allow-warnings
如果提示有 error 错误的话,就必须按照提示将错误解决掉,大多数都是 podspec 文件信息编辑有误,解决完后重新进行验证,如果提示信息不足,可以执行以下命令以获取更多错误信息:
pod lib lint --verbose
出现上图2的提示就是验证成功了。
- 提交修改
podspec 文件验证成功后,将改动后的文件 commit 提交,push到 GitHub
git commit -am "correct a content in BMToastView.podspec"
git push --all
- 项目打上 tag 版本
版本名必须要和之前podspec 文件中的 s.version 一致。
git tag "1.0.0" // 为 git 提交打上 tag
git push --tags // 将 tag 推送到远程仓库
- 发布到 cocoapods公共仓库
1)注册trunk
已经注册过 trunk 的就不需要注册了,执行以下命令查看自己有没有注册过:
pod trunk me
出现以下注册信息就代表已经注册过 trunk 了
如果没有就执行以下命令来注册 trunk ,前面填写邮箱地址,后面英文名字。例如下图1命令
pod trunk register xxx "xxx"
执行注册命令完成之后,会验证注册邮箱,打开刚才填的邮箱,打开邮件里面的链接,弹出网页后就注册成功了。
2)发布到 CocoaPods
cd 到你的项目目录(如果终端始终未关闭就不需要)
- 如果刚才是用 pod lib lint 验证成功的,就执行以下命令发布:
pod trunk push BMToastView.podspec
- 如果刚才是用 pod lib lint --allow-warnings 验证成功的,就执行以下命令发布:
pod trunk push BMToastView.podspec --allow-warnings
-
最后出现如下图所示,就表示发布成功了。
3)验证
执行以下命令验证自己的库( cocoapods 需要一些处理时间, 可以去 cocoapods 官网去查看自己的库)
pod search BMToastView