把自己的库上传到cocoapods实战

最近公司要把我们的产品活动盒子上传到cocoapods,遇到了一些新坑,所以决定自己重新总结一下,做一下详细的记录。

1. 步骤总结

  1. 把库上传到github
  2. 创建podspec文件和LICENSE文件
  3. 使用trunk上传到pod
  4. 验证是否成功

2. 上传到github

我这里说一下上传到组织类型的github账号要怎么操作,现在有两个github账号,一个是mcmore,组织账号,另一个是ljcoder2015,是我个人的github账号,我是mcmore这个组织的成员。

首先mcmore创建一个名为hezi-sdk-for-ios的仓库,接着用ljcoder2015这个账号Fork一下这个仓库,clone这个仓库到本地。

git clone git@github.com:ljcoder2015/hezi-sdk-for-ios.git

把库拷贝到这个本地仓库中,然后提交到github上,具体指令为

git add -A
git commit -m "更改说明"
git push

这个时候需要去github上创建一个pull request,向mcmore提交合并请求
QQ20161031-0](http://www.ljcoder.com/wp-content/uploads/2016/11/QQ20161031-0-300x37.png)

等mcmore同意合并后,我们就发现mcmore创建的仓库已经有我们上传的库了。
关于Fork的其它内容可以查看https://linux.cn/article-4292-1-rss.html

3. 创建podspec和LICENSE文件

用vim创建HeziSDK.podspec,HeziSDK是你的库名,注意,如果使用自带文本编辑器编辑,可能会引发格式错误。

cd 你的仓库目录
vim HeziSDK.podspec

插入下面的内容

Pod::Spec.new do |s|
s.name = 'HeziSDK'
s.version = '1.2.1'
s.license = 'MIT'
s.summary = '活动盒子SDK'
s.homepage = 'https://github.com/mcmore/hezi-sdk-for-ios'
s.authors = { 'mcmore' => 'ljcoder@163.com' }
s.source = { :git => "https://github.com/mcmore/hezi-sdk-for-ios.git", :tag => "1.2.1"}
s.requires_arc = true
s.ios.deployment_target = '7.0'
s.source_files = "HeziSDK/*.{h,m}", "HeziSDK/HeziSDK.a"
s.source = "HeziSDK/HeziSDK.bundle"
s.frameworks = 'UIKit'
end

只需要把以下内容改成你自己的即可

s.name :库的名字
s.version : 版本,要和github上的仓库tag对应
s.license :授权
s.summary :描述
s.homepage = github仓库主页
s.authors :作者名字和联系邮箱
s.source :仓库地址
s.requires_arc : 是否ARC
s.ios.deployment_target : 最低支持的系统版本
s.source_files : 资源文件
s.source : bundle文件
s.frameworks :所需的framework,多个用英文逗号隔开

4. 使用trunk上传到pod

  • 上传前的准备

在上传之前,需要把新添加的LICENSE文件和HeziSDK.podspec push到mcmore组织号的对应仓库里面。并叫组织号管理员添加一个tag,这个tag要和你的podspec文件中的版本对应,不然验证会出错。注意一下,一定是企业号的仓库添加tag才行,你自己给自己的仓库添加tag是没用的

git tag -a 1.2.1 -m 'my version 1.2.1'
git push origin --tags

git tag 指令说名可以看这里https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE

  • 使用trunk上传pod

在注册trunk之前,我们需要确认当前的CocoaPods版本是否足够新。trunk需要pod在0.33及以上版本,如果你不满足要求,打开Terminal使用ruby的gem命令更新pod:

sudo gem install cocoapods

更新结束后,我们开始注册trunk:

pod trunk register ljcoder@163.com 'mcmore' --verbose

ljcoder@163.com 是邮箱。mcmor是用户名。–verbose参数是为了便于输出注册过程中的调试信息。执行上面的语句后,你的邮箱将会受到一封带有验证链接的邮件,如果没有请去垃圾箱找找,有可能被屏蔽了。点击邮件的链接就完成了trunk注册流程。使用下面的命令可以向trunk服务器查询自己的注册信息:

pod trunk me

输出如下信息就表示你注册成功,就可以上传了。

pod trunk push HeziSDK.podspec

出现下面的信息,表示上传成功了。
QQ20161103-0

pod search HeziSDK

执行后可以查看到信息表明成功,赶紧新建一个工程试试吧。

push时可能会遇见的错误

ERROR | [iOS] unknown: Encountered an unknown error (Simulator iPhone 4s is not available.) during validation.

这个错误是因为是用的Xcode 8打包的库,已经不支持iPhone 4s了,解决这个问题的办法就是升级pod到新版本即可。