制作自己的开源项目支持Cocoapods下载

作者: 不冷的南风 | 来源:发表于2016-07-25 23:36 被阅读1726次

对于开发者来说,随着自己的开发经验越来越久,或是自己对于某个方面、知识点研究的比较透彻,应该都会尝试着写一个属于自己专属的功能文件,比如呢:图片轮播、相册选择、文件上传下载、音视频播放、UI动画、自动布局、刷新数据等…但怎么让自己写好的开源文件支持Cocoapods下载方便自己、他人使用呢,相信你认真看过这文章后一定也会掌握好这项技能的。

准备条件: GitHub账号,Trunk账号,GitHub Desktop客户端,Markdown编辑器

1. 创建开源的Public仓库

GitHub个人主页创建任意一个你想开源的仓库

包含的术语:
Repository name仓库名称
README说明文档
.gitignore包含的文件类型,即.git文件类型GitHub都不会将其加入到版本管理中
license文件(正规的仓库都应该有必须有且有一个,Pods依赖库对这个文件的要求更严)

创建步骤如图

接着clone到本地GitHub Desktop

clone本地

Finder打开本仓库,看到目录结构如下

Snip20160717_12.png
2. 创建podspec描述文件

podspec文件:
它本质是个ruby文件,里面包含代码的作者、版本号、源代码地址、依赖库等信息的文件,任何支持Cocoapods的开源代码都必须有podspec文件,这样开源很方便的让Cocoapods搜索到对应的podspec

创建podspec文件

pod spec create 工程名

创建好之后在Finder中看到的目录结构如下

创建podspec之后目录结构

接着在工程文件内部添加你自己的开源文件(文件名建议和工程名一样),这时也可以添加为开源框架说写的Demo,这样方便开发者更好的理解、使用等(这不是必须的,但我个人还是强烈建议用封装好的开源文件写个Demo

整体目录结构

这时再打开客户端GitHub Desktop,可以看到待提交文件和历史提交记录等

待提交文件

然后打开并编辑自己仓库的podspec描述文件

编辑podspec描述文件

podspec常用的参数的含义解释如下:

s.name 仓库名字
s.license 文件类型
s.requires_arc 是否支持ARC
s.version 当前版本号
s.platform 支持的平台
s.framework 导入依赖的框架库
s.summary 仓库功能的描述
s.author 作者信息
s.source_files 源文件的路径(相对podspec文件而定)
s.resourcs 资源文件,不需参与编译的
s.homepage 主页地址
s.source 具体路径
s.public_header_files 预编译头文件路径

podspec语法结构

Pod::Spec.new do |s|
 ...
 ... 
s.subspec '子目录' do |ss|
 ...
end 
s.subspec '子目录' do |ss|
 ... 
end 

end

即:它从Pod::Spec.new do |s|开始,到最后一个end结束中间每一个subspec到end是一个子目录,子目录对应的|**|中间名字是可以任意给命名的,但子目录内部使用的名称必须一致

podspec通配符的说明

- a{bb,bc}def.{h,m}表示四个文件abbdef.h abbdef.m abcdef.h abcdef.m
- *.{h,m,mm}表示所有的.h .m .mm文件
- Class/**/*.{h,m}表示Class目录下的所有.h .m文件
3. 为源代码添加对应的Tag
  1. 在GitHub上面的源代码需要打上版本号标签,这样Cocoapods管理器才能更准确地找到你的repo
  2. 通过Iterm命令push源代码的tag
git tag '0.0.1' //版本号 
git push --tags //提交标签

截图如下:


Snip20160717_13.png

这时打开自己的GitHub主页

注意:若是以上步骤都不错的话,这时Tags下的文件和Branches下的文件应是一一对应的,如下:

Snip20160717_14.png Snip20160717_15.png
4. 验证podspec文件的正确性
pod spec lint 工程名字.podspec --verbose

成功之后的截图如下:


Snip20160717_16.png

注意:任何的警告、错误都是不能被添加到Spec Repo

5. 通过Trunk推送给Cocoapods服务器

首先向trunk服务器查询自己的注册信息

pod trunk me

存在Trunk账号截图:

Snip20160717_17.png

没有注册Trunk的话,注册一个账号

  • 先确认当前的Cocoapods版本号(最低要求版本0.33),现在最新的版本号好像是1.0.1
pod --version / gem list --local | grep cocoapods

若是版本不满足,更新一下

sudo gem install cocoapods

注册Trunk账号,回车之后去打开邮箱的链接(需要copy,不能直接点击)即可完成

pod trunk register 邮箱全称 '用户名' --verbose

最后通过终端push对应的podspec,完成开源项目支持Cocoapods下载的最后一步

pod trunk push 工程名字.podspec

成功的结果截图:


Snip20160717_18.png
5. 更新本地pod依赖库
pod setup

结果截图如下:


Snip20160717_19.png

这时就可以搜索自己刚提交过的开源文件


Snip20160717_20.png
  • 成功之后Cocoapods服务器会将上传的podspec文件转换为需要的json文件
  • 检验你自己的开源描述文件
  • 前往文件夹 - ~/.cocoapods/repos/master/Specs找到对已应的json文件,如截图所示:
    Snip20160717_21.png

打开json文件内容:

Snip20160717_22.png
  • 此刻,你也可以在Cocoapods官方的spec文件中查询到对应的json文件,Cocoapods的Spec,方法如上面所示,这里省略…

自此,制作自己的开源项目支持Cocoapods下载的全部操作流程结束。

6. 更新仓库的版本

若是修改描述文件、更新开源文件等都需要重新更新仓库
步骤如下:

  • 修改podspectag(代码版本号)
  • 重新trunkCocoapods服务器

今回家早了些,自己最近在写即时通讯IM的东西,忙的好久没上过简书了,还好现在终于给这个知识点写完了…晚安啦。。。

最后附上之前的参考链接:
CocoaPods安装使用及配置私有库

相关文章

网友评论

  • Jens丶:不错很详细,改天试一下
    不冷的南风:@Jens丶 有不懂的尽管留言,:smile:
  • Bison:你好,我这个和你这个结构一样 本地验证一直报错,可以麻烦看一下么? 谢啦😄https://github.com/AllLuckly/LBLaunchImageAd
    不冷的南风:@Bison 很明显,你的podspec描述文件设置错了,方便的话把配置文件、目录结构贴图出来或发我私信
    Bison:@chongzone - ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code.
    - WARN | [iOS] xcodebuild: LBLaunchImageAd/LBLaunchImageAd/Lib/LBLaunchImageAd/LBLaunchImageAdView.m:161:75: warning: values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead [-Wformat]
    - ERROR | xcodebuild: /Users/gold/Library/Developer/Xcode/DerivedData/App-dvdsdqfmhmirfbgtvghkwvrvrygf/Build/Products/Release-iphonesimulator/LBLaunchImageAd/LBLaunchImageAd.framework/Headers/LBLaunchImageAdView.h:18:9: error: include of non-modular header inside framework module 'LBLaunchImageAd.LBLaunchImageAdView' [-Werror,-Wnon-modular-include-in-framework-module]
    - NOTE | xcodebuild: /var/folders/zr/4ckhw3bd5mn4kdn2cjb4sz440000gn/T/CocoaPods/Lint/App/main.m:3:9: fatal error: could not build module 'LBLaunchImageAd'

    Analyzed 1 pod spec. 具体的错误。。。。
    不冷的南风:@Bison 报错什么,说的具体点…
  • 60343a0ad510:laofugeinidiyikexing.

本文标题:制作自己的开源项目支持Cocoapods下载

本文链接:https://www.haomeiwen.com/subject/tfdmjttx.html