前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码管理 | 创建并管理自己的公有Cocopods库

代码管理 | 创建并管理自己的公有Cocopods库

作者头像
進无尽
发布2018-09-12 16:40:19
9260
发布2018-09-12 16:40:19
举报
文章被收录于专栏:進无尽的文章

前言

代码语言:javascript
复制
随着项目的发展,版本迭代,代码的重构,我们项目中一般会有很多有业务功能行性公共的组件,
app中可能多处都会使用到,甚至别的项目中也需要使用。比如我们 A 项目中有一个语音评测的功能,
前期只是在 A 项目里面需要用到,后面在另一不同项目绘本阅读需要用到相同语音评测的功能。
此时我们一般有两种做法,

一是直接将这部分代码copy到绘本阅读这个项目中; 二是将语音评测这部分逻辑给抽取出来,然后在分别在两处使用

代码语言:javascript
复制
很明显在项目初期,或者时间紧迫的情况下,第一种方式很好的能够胜任工作,我们前期也是这么做的,

但是我发现到了随着项目的推移和发展,这样做的时间成本太大了,效率也很低下,有很多隐患(评测逻辑一旦有变动,你需要改动两次,而且你没法保证两次的改动一致)。

所以把公司的公共组件抽离出来,使用 Cocoapods 集成管理是一种非常好的解决方案,这样的话,后续只要维护更新好这个公共组件,所有使用到的工程 pod install/pod update 下即可使用到最新的版本,达到一处更改多处使用的效果而且工程管理更加高效。

一、注册CocoaPods账户信息

想要创建一个开源pod库, 首先我们需要注册CocoaPods, 这里使用trunk方式, 作为一个iOS开发人员你一定安装了CocoaPods, 那么只需要在终端执行:

代码语言:javascript
复制
pod trunk register 邮箱地址 '用户名' --verbose

这里我们一般使用github邮箱和用户名, 然后在你的邮箱中会收到确认邮件, 在浏览器中点击链接确认即注册成功, 成功之后可以终端执行:

查看自己的注册信息, 以后当你有了自己的开源Pod库, 也可以用此方式随时查看自己发布过的Pods;

代码语言:javascript
复制
# pod注册信息,开源pod库
pod trunk me 

二、创建共享库的文件仓库

这里从头创建一个共享库,以便对整个创建过程更加清楚。在terminal中创建一个全新的工程。这个文件仓库是你公共类库的维护仓库,新版本和修改可以通过这个仓库发布。

共享库需要三个必不可少的部分:

代码语言:javascript
复制
A. 共享文件夹(文件夹存放着你要共享的内容, 也就是其他人pod得到的文件, 
  .podspec文件中的source_files需要指定此文件路径及文件类型);
B. LICENSE文件(默认一般选择MIT);
C. 库描述文件.podspec(本库的各项信息描述, 需要提交给CocoaPods,
   pod通过这个文件查找到你共享的库,).
代码语言:javascript
复制
在terminal  中输入
$ pod lib create 新的库名

在创建库的时候,会询问你关于对新建库的一些要求,根据自己的要求配置好就OK,可以参考Using Pod Lib Create

这是我的设置

三、 配置好文件仓库后上传到公用仓库github | gitlab

把自己共享库需要的文件放置到工程中的指定位置

之后,将新建的项目push到远程服务端github | gitlab。具体的操作需要先在github上创建一个空的repo,然后使用命令行提交。

这里不用勾选即可

代码语言:javascript
复制
git add -A
git commit -m "first commit"
//这里替换成自己的 github上的项目地址
git remote add origin https://github.com/fangmeigithub/JWJOpenServe.git 
git push -u origin master

提交成功后,github上面的新建工程变为类似下图这样的样子。

四、编辑并验证 .podspec文件

这里也有俩值得注意的地方;

代码语言:javascript
复制
s.version          = '1.0.0'  //这里的版本和之后提交到github上的release 版的tag必须一致
s.summary          = '進无尽的公开库'  //这里必须修改,不修改的话下面的验证时会报错

编写完成后, 我们需要验证.podspec文件的合法性, 这里需要终端cd到.podspec文件所在文件夹, 执行:

代码语言:javascript
复制
pod lib lint JM_ActionSheet.podspec

不修改 s.summary 就会报错

如有警告或者错误请重新检查你的编写正确性, 如果没有问题会出现

修改 s.summary后验证通过

五、给文件仓库打tag, 发布一个release版本

一切准备就绪后, 我们需要在你的git仓库里面存在一个与.podspec文件中一致的version, 这里你可以在你的git仓库中的releases一项去手动发布, 也可以在当前文件夹下使用终端命令【发布之前可以把git上新的变更先提交发布出去】:

代码语言:javascript
复制
git tag -m 'first release' '1.0.1'
//推送tag到远端仓库
git push --tag 

成功之后即可在你的releases里面看到这个tag的版本.

六、发布自己的库描述文件podspec给cocoapods

同样在这个文件夹下, 终端执行:

代码语言:javascript
复制
pod trunk push JWJOPenKit.podspec 

这一步需要等很久,如果最后没有报错的话: 将你的库文件.podspec文件提交到公有的specs上面, 这一步做的操作是验证你的podspec文件是否合法+提交到specs中(等同于fork;commit;push)+将上传的podspec文件转成json格式文件),成功后会出现Congrats信息噢~

至此,你的共享库就可以被其他人通过 Cocoapods 所使用了。

七、更新维护podspec

如果有错误或者需要迭代版本,修改工程文件后推送到远端仓库后, 需要修改podspec中的版本号, 并重新打tag上传, 再进行新一轮的验证和发布, 当然, 创建一个演示demo工程供其他开发者下载查看并不会影响我们的pod库。【在示例文本库中制作演示demo好像需要导入组件的源文件,使用 pod好像导入不进来,无法直接使用。当然你也可以把组件源码文件库和Dome分开,把 Dome作为对外公开的工程演示用例】

八、关于查找和使用新创建的库

当你发布共享库成功后,是可以马上供其他人使用的,但是当你自己使用 pod search XXX的时候却发现本地搜索不到:

解决办法: pod setup成功后生成的~/Library/Caches/CocoaPods/search_index.json文件, 是用来查找的索引文件, 终端输入:

代码语言:javascript
复制
rm ~/Library/Caches/CocoaPods/search_index.json

删除~/Library/Caches/CocoaPods目录下的search_index.json文件, 删除成功后再执行:pod search 库名, 等待输出:Creating search index for spec repo 'master'.. Done! 稍等片刻就会出现你想要的结果~


参考文章

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、注册CocoaPods账户信息
  • 二、创建共享库的文件仓库
  • 三、 配置好文件仓库后上传到公用仓库github | gitlab
  • 四、编辑并验证 .podspec文件
    • 五、给文件仓库打tag, 发布一个release版本
      • 六、发布自己的库描述文件podspec给cocoapods
        • 七、更新维护podspec
        • 八、关于查找和使用新创建的库
        相关产品与服务
        智聆口语评测
        智聆口语评测(Smart Oral Evaluation,SOE)是腾讯云推出的中英文语音评测产品,支持从儿童到成人全年龄覆盖的语音评测,支持单词、句子、段落、自由说等多种模式,支持发音准确度、流利度、完整度等全方位打分机制,与专家打分相似度达95%以上,可广泛应用于中文及英语口语类教学中。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档