1、注册CocoaPods账户信息
创建一个开源pod
库,需要注册CocoaPods
终端执行:$ pod trunk register 邮箱地址 '用户名' --verbose
这里我们一般使用github
邮箱和用户名, 然后在你的邮箱中会收到确认邮件, 在浏览器中点击链接确认即注册成功;
查看自己的注册信息,以后当你有了自己的开源Pod库,也可以用此方式随时查看自己发布过的Pods
;
终端执行 $ pod trunk me
2、创建Git仓库
a. 在GitHub上创建一个公开项目,项目中必须包含这几个文件:
A. 共享文件夹:文件夹存放着你要共享的内容, 也就是其他人
pod
得到的文件,.podspec
文件中的source_files
需要指定此文件路径及文件类型;
B.LICENSE
:开源许可证,默认一般选择MIT
;
C.README.md
:仓库说明
D. 库描述文件.podspec
:本库的各项信息描述, 需要提交给CocoaPods, pod通过这个文件查找到你共享的库,.podspec
文件的格式见第4点.
b. 终端命令创建一个全新的工程,具体参考:Using Pod Lib Create
终端执行 $ pod lib create 库名
然后可以使用SourceTree等工具上传你的代码到公共仓库, 关于如何使用命令行上传代码到远端仓库, 可以移步:iOS开发使用Git那些事.
3、创建*.podspec文件
.podspec
是用Ruby
的配置文件,描述你项目的信息
在你的仓库目录下:
终端执行 $ pod spec create BitautoTech
这时就会在你的仓库下生成BitautoTech.podspec
文件
4、编辑*.podspec文件
Pod::Spec.new do |s|
s.name = "BitautoTech" # 项目名称
s.version = "0.0.1" # 版本号 与 你仓库的 标签号 对应
s.summary = "A short description of BitautoTech." # 项目简介
s.description = <<-DESC
这中间写描述内容
DESC
s.homepage = "https://github.com/huipengo/BitautoTech" # 你的主页
s.license = "MIT" # 开源证书
s.author = { "huipeng" => "[email protected]" } # 作者信息
s.source = { :git => "https://github.com/huipengo/BitautoTech", :tag => "#{s.version}" } # 你的仓库地址,不能用SSH地址
s.source_files = "BitautoTech", "BitautoTech/**/*.{h,m}" # 你代码的位置, BitautoTech/**/*.{h,m} 表示 ** 文件夹下所有的.h和.m文件
s.exclude_files = "BitautoTech/BitautoTechTests", "BitautoTech/BitautoTechUITests"
s.requires_arc = true # 是否启用ARC
s.platform = :ios, "8.0" # 平台及支持的最低版本
s.frameworks = "UIKit", "Foundation" # 支持的框架
# s.dependency "JSONKit", "~> 1.4" # 依赖库
end
验证 .podspec
文件的格式是否正确,cd
到 *.podspec
文件所在的目录下
终端执行 $ pod lib lint
或者执行 $ pod lib lint BitautoTech.podspec
验证成功会出现:
-> BitautoTech (0.0.1)
BitautoTech passed validation.
如果出现ERROR
,需要检查所填写项的正确性,如果出现WARN
,如下:
-> BitautoTech (0.0.1)
- WARN | description: The description is shorter than the summary.
[!] BitautoTech did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it).
You can use the `--no-clean` option to inspect any issue.
提示我们需要加--allow-warnings
这么一句话,命令改为:
终端执行:
pod lib lint --allow-warnings
pod lib lint BitautoTech.podspec --allow-warnings
pod lib lint --allow-warnings --use-libraries
5、给仓库打tag
标签相当于将你的仓库的一个压缩包,用于稳定存储当前版本。标签号与你在 s.version = "0.0.1"
的版本号一致 0.0.1
创建标签
终端执行 $ git tag -a 0.0.1 -m '标签说明'
推送到远程
终端执行 $ git push origin --tags
6、发布 *.podspec
在仓库目录下执行
终端执行 $ pod trunk push BitautoTech.podspec
将你的 *.podspec
发布到公有的 speecs
上,这一步操作包括:
a.更新本地
pods
库~/.cocoaPods.repo/master
b.验证*.podspec
格式是否正确
c.将*.podspec
文件转成JSON
格式
d.对master
仓库进行合并、提交
成功后会出现Congrats
信息如下:
7、使用仓库
发布到Cocoapods后,在终端更新本地pods仓库信息
终端执行 $ pod setup
查询仓库 $ pod search BitautoTech
如果search
出现以下错误:
[!] Unable to find a pod with name, author, summary, or description matching `BitautoTech`
删除 cocoapods
的索引,然后重新 search
,
终端执行 $ rm ~/Library/Caches/CocoaPods/search_index.json
查询仓库 $ pod search BitautoTech
终端输出:Creating search index for spec repo 'artsy'.. Done!
会触发cocoapods重新拉这个索引文件
8、更新维护
- 更新
*.podspec
中的版本号 - 打上标签推送流程
-
pod trunk push *.podspec
推送到pods
仓库
更新后你就可以在 CocoaPods Master Repo 仓库上看到自己的提交记录了
9、遇到的坑
-
ERROR | [iOS]
xcodebuild: Returned an unsuccessful exit code.
*.podspec
文件里面设置的 s.ios.deployment_target = '8.0'
,最低支持版本为 8.0
,而在代码里面用到了 xib
,里面勾了 Use Safe Area Layout Guides
,项目支持最低版本为 9.0
,Build
不会报错,执行 pod lib lint *.podspec
报 xcodebuild: Returned an unsuccessful exit code.
,原来是 Use Safe Area Layout Guides
的问题,修改 *.podspec
文件 s.ios.deployment_target = '9.0'
修复了这个问题
-
xib
报Use Safe Area Layout Guides
error
修改xib
的Builds for
选项 改为Deployment Target (9.0)
参考链接:
CocoaPods创建公有和私有Pod库方法总结
CocoaPods 公有仓库的创建
CocoaPods应用篇之搭建并发布自己的私有库
podspec文件解析
cocoapods系列教程---spec文件