最近做一个SDK,需要用cocoapods发布,下面总结下发布流程,及一些坑
首先梳理下大致流程
- 1.将代码提交到仓库
- 2.注册trunk账户
- 3.创建podspec文件
- 4.提交代码
首先,将我们的pod更新到最新版本
sudo gem install cocoapods
更新的时候可能报错,下面是错误信息
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/bin directory.
解决办法
sudo gem install -n /usr/local/bin cocoapods
pod更新完之后,开始我们的提交
1.将代码提交到仓库
注意,任意仓库都行,不一定非要github
这一部分不做细说,git用法自行百度,下面是一些注意事项
- git上创建项目的时候最好带上
.gitignore
,README.me
,LICENSE
文件,这样方便后续使用 - 给要发布的版本加tag,pod在拉取代码的时候是根据tag的,也可以根据commit拉取,但是commit太长,另外可以将tag和version设置相同,方便管理
下面是简单的提交代码和提交tag的命令,如果出错了,百度git用法
git add .
git commit -m “version 1.0.0”
git push origin master
git tag '1.0.0'
git push --tags
git tag //查看tag
git tag -d '1.0.0' // 删除指定标签
2.注册trunk账户
想要发布代码,得先注册账户
pod trunk register 邮箱 '用户名' --verbose
注册成功后在你输入的邮箱中会收到一封邮件, 下面是邮件内容
Hi Miridescent,
Please confirm your registration with CocoaPods by clicking the following link:
https://trunk.cocoapods.org/sessions/verify/712c7c88
If you did not request this you do not need to take any further action.
Kind regards, the CocoaPods team
点击邮件中网址,跳转到网页即注册成功,如果不能点击,复制粘贴到浏览器打开也可以
添加其他维护者(如果你的pod是由多人维护的,你也可以添加其他维护者)
pod trunk add-owner 库名 共同维护者邮箱
3.创建podspec文件
命令
pod spec create test
会生成一个test.podspec
文件
用编辑器打开这个文件,发现有许多内容,大部分都是注释,我们只要根据需要保留自己想要的部分即可,主要的几个参数如下
Pod::Spec.new do |s|
s.name = "test" // 名称
s.version = "1.0.0" // 版本
s.summary = "test pod" // 总结
s.description = 'test pod a' // 描述
s.homepage = "https://github.com/Miridescen/coco_test1" // 项目主页
s.license = { :type => "MIT", :file => "LICENSE" } // 协议文件
s.author = { "xx" => "邮箱" } // 作者
s.platform = :ios, "8.0" // 支持的版本
s.ios.deployment_target = "8.0" // ios开发支持的版本,对应的还有tvOS、watchOS等
s.source = { :git => "https://github.com/Miridescen/coco_test1.git", :tag => s.version } 代码地址
s.source_files = "trs_ta_sdk_test", "trs_ta_sdk.framework/**/*.{h,m,c}" // 要发布的文件
s.vendored_frameworks = 'trs_ta_sdk.framework' // 要发布的framework框架
s.public_header_files = 'trs_ta_sdk.framework/Headers/*.h' // 要显示的头文件
s.frameworks = "UIKit", "Foundation" // 引用的框架
s.requires_arc = true // 是否支持ARC
end
大致就是这些就可以,其中有以下几点需要注意
- s.description要比s.summary长,否则会报警告
- WARN | description: The description is shorter than the summary.
- s.license中的标明的文件必须有对应的存在,否则会报警告
- s. source中的版本号必须在仓库中有对应的标签,否则会报警告,其实这里的tag参数可以用commit代替,后面接的是对应的commit值,就是
ba01464749bb73e4bc380a9301e2ce8e7bfab3f3
这样的一大长串东西
最好将s.version和tag相对应,这样方便查找管理
- WARN | source: The version should be included in the Git tag.
- s.source_files这个路径很重要,不要填错了,可以用*匹配,下面是匹配规则
*
表示匹配所有文件
*.{h,m}
表示匹配所有以.h和.m结尾的文件
**
表示匹配所有子目录
配置好文件之后检查podspec是否合格
pod spec lint test.podspec
如果没有问题的话会有提示
Analyzed 1 podspec.
test.podspec passed validation.
这里有可能会出现一个看不懂的报错
- ERROR | [iOS] unknown: Encountered an unknown error (/usr/bin/xcrun simctl list -j devices
xcrun: error: unable to find utility "simctl", not a developer tool or in PATH
) during validation.
这时我们需要修改xcode的命令行工具配置
xcode->prefences->locations->command line tools,如下图
command line tools
4.提交代码
上面的东西都准备好之后,直接
pod trunk push
成功之后会有下面的提示
--------------------------------------------------------------------------------
🎉 Congrats
🚀 xxx (1.0.0) successfully published
📅 May 20th, 23:59
🌎 https://cocoapods.org/pods/xxx
👍 Tell your friends!
--------------------------------------------------------------------------------
恭喜你,提交成功了,可以快乐的玩耍了
pod search xxx
命令可以搜索下我们刚刚提交的代码,可能会出现下面的错误
[!] Unable to find a pod with name, author, summary, or description matching `xxx`
这是pod没有及时的更新依赖库,可以有下面两种解决办法
pod setup
执行更新
如果还不行的话先移除search_index.json
文件,然后重新创建
rm ~/Library/Caches/CocoaPods/search_index.json
pod search xxx
这里可以放心大胆的移除,在执行pod search xxx
的时候search_index.json
文件就会自动创建
上面就是一些总结和一些坑,有问题可以提出一起交流
网友评论