美文网首页
通过cocoaPod生成spec文件

通过cocoaPod生成spec文件

作者: 杨空空 | 来源:发表于2017-04-11 15:04 被阅读299次

一个简单的spec文件如下

Pod::Spec.new do |s|
s.name = '框架名'
s.version = '0.1.0'
s.summary = 'A short description of ZYTemplateName.'
s.homepage = 'https://github.com/ripperhe/ZYTemplateName'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { '框架作者' => '作者邮箱' }
s.source = { :git => 'https://github.com/ripperhe/ZYTemplateName.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.source_files = '框架名/Classes/*/'
end

先进入需要发布的框架的根目录,执行

$ pod spec create [NAME]

这里的 NAME 即为框架名字,不需要手动加 .podspec 后缀。执行完成之后,会生成 NAME.podspec 文件,进入该文件,将对应信息改为你具体的信息即可。

如果你发现你的 spec 文件默认填写的用户名和邮箱不是你刚才利用 trunk 命令注册账号时候填写的不用惊讶,因为默认取的是 git 的用户名和邮箱,所以想修改的话,去修改 ~/.gitconfig 文件中的用户名和邮箱。以下为相关源码:

def default_data_for_template(name)
data = {}
data[:name] = name
data[:version] = '0.0.1'
data[:summary] = "A short description of #{name}."
data[:homepage] = "http://EXAMPLE/#{name}"
data[:author_name] = git config --get user.name.strip
data[:author_email] = git config --get user.email.strip
data[:source_url] = "http://EXAMPLE/#{name}.git"
data[:ref_type] = ':tag'
data[:ref] = '#{s.version}'
data
end

spec 文件的这些描述,基本上看命名是可以看明白的。实在不明白可以查看 官方文档https://guides.cocoapods.org/syntax/podspec.html#specification
需要注意的是,s.version 是你将要发布的 pod 仓库的版本,s.source 是你的仓库源地址和对应的 tag 信息。

version 和 tag 可以是不同的,但是为了方便管理和维护,我们一般将其设置为一样的,所以 tag 可以 直接使用 s.version.to_s。既然这里用到了 tag,那么接下来,就需要为仓库代码打上 tag。

提交代码并为框架打 tag

首先,需要将本仓库的所有修改提交到远程仓库。

$ git add .
$ git ci -m 'release pod'
$ git push

上一步在仓库的根目录创建了 spec 文件,随着代码的提交,spec 文件也会提交到自己的远程代码仓库。这个 spec 文件和需要发布的框架放在一起并不是必须,只是这样可以方便我们以后维护这个框架。

发布 pod 仓库,需要和自己框架的远程仓库代码版本对应,所以这里需要为当前代码打上 tag,这个 tag 是和前面的 spec 文件中填写的 tag 对应的。框架发布成功之后,CocoaPods 会根据 tag 信息去获取相应代码。

$ git push origin master
$ git tag '0.1.0'
$ git push --tags

验证 spec 文件

用于验证 spec 文件是否正确,可以及早发现问题。同样,也是在需要发布的框架的根目录,执行

$ pod spec lint NAME.podspec

这里需要加上 .podspec 后缀来验证这个文件。如果有报错,仔细查看报错信息,一般可以定位问题,可以加上 --verbose 查看详细的验证过程,方便定位问题。

$ pod spec lint NAME.podspec --verbose

验证 spec 文件也可以用另外一个命令

$ pod lib lint NAME.podspec

pod spec lint 和 pod lib lint 最主要的区别是,前者会根据 spec 文件 tag 信息去验证远程仓库代码是否存在,后者不会。简单理解就是,pod spec lint 联网检查,pod lib lint 不联网检查。

验证的时候,可能会报错,或是报警告。报错的话,必须解决,详细看具体信息,一般能找到问题,如果不能,自行 google 😁。警告的话,可以忽略,不过能解决的话,最好解决。

$ pod lib lint ZYTemplateName.podspec --allow-warnings

推送 spec 文件

验证文件通过之后,需要将文件推送到 CocoaPods 描述文件仓库,在框架根目录,执行以下命令:

$ pod trunk push NAME.podspec

这个命令,可以不在后面加描述文件名称,如果不加的话,会在终端当前工作目录下查找 .podspec 文件,执行 trunk push 命令。

这一步稍微会久一点,需要等待一会儿,因为 CocoaPods 需要先将 spec 文件上传到 CocoaPods/Specs 仓库,再 git pull 到本地 CocoaPods/Specs 仓库。等待显示成功之后,可以验证以下自己的框架是否真的发布成功了。搜索一下:

$ pod search [NAME]

如果搜索不到,可能是仓库的索引库出现问题,将其删除,重新生成索引。索引缓存地址:

~/Library/Caches/CocoaPods/search_index.json

如果这样还不行,有可能是官方的 spec 仓库 出现问题。官方 spec 仓库路径:

~/.cocoapods/repos/master

将其删除,再重新克隆官方的 spec 仓库:

$ pod setup

这个时候再试试 pod search 应该就有了。
对于公司内部使用的组件模块,一般是不公开的,所以就需要用到私有 sepc 仓库。

将代码发布到私有仓库和 CocoaPods 官方库最大的区别就是,不需要利用 trunk 命令创建 session。既然整个私有库都是你的,所以也没有必要再有账号机制了,自己想怎样就怎样。

少做了一件事情,但也有额外的事情需要做。前面 spec 文件都是 CocoaPods 帮你管理的,所以做私有 pod,就需要创建私有 spec 仓库。

整体流程如下:

  安装 CocoaPods
  创建远程私有 spec 仓库
  克隆远程私有 spec 仓库到本地
  创建 spec 文件
  提交代码并为框架打 tag
  验证 spec 文件
  通过 pod repo push 推送 spec 文件
  很多流程是相同的,相同的流程一笔带过。

另一种方式

1. 执行命令

projectName--项目名称
pod lib create projectName

2. 选项设置

What language do you want to use?? [ Swift / ObjC ]
ObjC
Would you like to include a demo application with your library? [ Yes / No ]
Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
Kiwi
Would you like to do view based testing? [ Yes / No ]
No
What is your class prefix?
项目缩写

相关文章

  • 通过cocoaPod生成spec文件

    一个简单的spec文件如下 Pod::Spec.new do |s|s.name = '框...

  • CocoaPods 制作与提交

    制作CocoaPod 手动创建 创建 spec 文件,手动创建项目并配置 podName.podspec 文件 自...

  • pyinstaller

    先pyinstaller .py生成.spec后再修改.spec文件, 然后pyinstaller .spec-F...

  • 2019-06-08: CocoaPod 原理?

    一:CocoaPod 原理? Snip20190608_2.png 1: 远程索引库spec文件地址 2: 本地索...

  • 创建自己的cocoapod仓库和spec

    创建自己的cocoapod仓库和spec 再本地创建一个文件用来存放自己所需要上传的文件,创建的文件叫: cre...

  • [Cocoapods] 如何发布一个私有Pod

    发布私有CocoaPod Spec 创建private pod主要步骤 创建私有Spec Repo 1、创建git...

  • cocoaPod和spec

    1、cd 目录 2、pod init 创建podfile文件 3、pod search MJExtension 搜...

  • ionic 单元测试

    Angular项目创建时,会自动生成spec.ts单元测试文件. 在ionic项目中, 需要手动创建spec.ts...

  • pyinstaller

    一、生成spec文件 ①在cmd中输入 pip install pyinstaller 来安装pyinstalle...

  • CocoaPods & Git

    pod命令 pod spec create XTProtocolManager//生成pod库配置文件 pod i...

网友评论

      本文标题:通过cocoaPod生成spec文件

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