每次尝试接触一个新东西,总不免出些七七八八,乱七八糟的问题。明明之后很多操作好像似乎也一样,但是一开始总要报各种错。好在查了资料,终归是成功了的,记录一下笔记,方便下回使用。
大致流程
1.准备好要发布到cocoapods的代码。
2.创建.podspec,并根据自己的项目情况,编辑.podspec文件。
3.将包含.podspec的项目上传到GitHub,并且保证上传后GitHub上包含.podspec及一份LICENSE证书。
4.讲项目打成tag
5.注册并验证cocoapods
6.发布
第1步省略,从第2部说起。
2.创建.podspec,并根据自己的项目情况,编辑.podspec文件
①创建.podspec:终端cd到要上传的项目目录,使用:
//YourPodName 改成你自己pod框架的名字
pod spec create YourPodName
创建完成之后,就会在自己项目的文件夹里看到一个YourPodName.podspec的文件。对这个文件进行编辑。
②.podspec文件编辑
文件里以#开头的是注释,都可以删掉,剩下有用的信息看得更清晰。先放一份方便复制修改的,底下再放一份加注释说明的。
Pod::Spec.new do |s|
s.name = "YourPodName"
s.version = "1.0.0"
s.summary = "这是简介"
s.description = <<-DESC
这是描述,描述需要比简介长。
DESC
s.homepage = "https://github.com/gulingxuan/YourPodName"
s.license = "MIT"
s.license = { :type => "MIT", :file => "LICENSE" }
s.platform = :ios, "8.0"
s.author = { "gulingxuan" => "[email protected]" }
s.social_media_url = "https://weibo.com/xuanxuan7520"
s.source = { :git => "https://github.com/gulingxuan/YourPodName.git", :tag => "v#{s.version}" }
s.source_files = "YourPodName/**/*.{h,m}"
s.requires_arc = true
end
Pod::Spec.new do |s|
#项目名字
s.name = "YourPodName"
#版本号,需要和github上打的tag标签号保持一致,否则上传的时候会报错
s.version = "1.0.0"
#项目简介
s.summary = "这是简介"
#项目描述
s.description = <<-DESC
这是描述,描述需要比简介长。
DESC
#项目的主页
s.homepage = "https://github.com/gulingxuan/YourPodName"
# 开源证书
s.license = "MIT"
#证书相关的吧,不知道具体什么鬼
s.license = { :type => "MIT", :file => "LICENSE" }
#平台及支持的最低版本
s.platform = :ios, "8.0"
# 作者信息
s.author = { "gulingxuan" => "[email protected]" }
# 个人主页
s.social_media_url = "https://weibo.com/xuanxuan7520"
#你的仓库地址,不能用SSH地址
s.source = { :git => "https://github.com/gulingxuan/YourPodName.git", :tag => "v#{s.version}" }
# 代码的位置, YourPodName/*.{h,m} 表示 YourPodName 文件夹下所有的.h和.m文件
s.source_files = "YourPodName/*.{h,m}"
# 是否启用ARC
s.requires_arc = true
#支持的框架
s.frameworks = "UIKit", "Foundation"
# 依赖库
# s.dependency = "AFNetworking"
end
③验证.podspec 文件的格式是否正确,这一步十分重要,必须要验证通过才行。
终端继续使用命令:
// 也可以使用 pod lib lint YourPodName.podspec
$ pod lib lint
验证如果有error,则必须要解决,WARN能解决也尽量解决。如果出现以下警告
- WARN | url: There was a problem validating the URL http:xxxxx
也可以用以下命令验证
$ pod lib lint --allow-warnings
这个解决方法在别人的文章里看到,的确可以验证通过,但是后面上传的时候还是报错了。最后是升级了一堆乱七八糟的环境之后,重新走了一遍所有流程,发现没有这个警告了,再上传就成功了。所以这个验证方式会是否管用,我没有成功验证过。仅供参考。
3.所有编辑完成之后,将项目及包含.podpesc文件及 LICENSE证书的文件上传到Github。LICENSE文件可以在创建GitHub项目的时候一起生成。具体上传就不细说了。
4.给项目Git打tag,第一次需要在前面加个v。我第一回没有加,果然是报错了。打tag并推送到远程仓库:
//这里的tag版本号,必须和podspec中的版本号保持一致,大写加粗描黑的必须。
$ git tag "v1.0.0"
$ git push --tags
- 如果注册了cocoapods,就不必再注册了,如果没有注册,则先注册。所以建议先验证,再注册,最后再验证,没问题再推。
//验证你的信息
pod trunk me
//没有则注册,[email protected] 和YourName换成自己的邮箱及名字
pod trunk register [email protected] "YourName"
//再次验证
pod trunk me
- 验证没有问题则开始发布到仓库
pod trunk push YourPodName.podspec
如果整套流程都没有问题,并且发布成功了,就可以查询仓库看一下了。
pod search YourPodName
处查到基本就完成了整个上传发布,大功告成。
============= 报错分割线 =============
如果出现报错:
1.- 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.
[!] The spec did not pass validation, due to 1 error.
设置一下Xcode