理解CocoaPods的Pod Lib Create

作者: sea_biscute | 来源:发表于2016-12-01 10:01 被阅读3092次

前言

在我们想要发布自己的pod文件时,需要通过Pod Lib Create指令去创建pod,然后添加文件,测试后发布.
这次我们来探究下Pod Lib Create到底是如何实现的,该指令帮我们做了什么呢?

pod lib create

通过pod lib create创建一个pod,分析创建流程
当执行pod lib create ProjectName时,其实是下载了一个pod模板,然后在内部通过更改.podspec文件的配置定制化自己的pod,
pod lib create ProjectName其实使用了默认参数,补全的话pod lib create ProjectName --template-url=https://github.com/CocoaPods/pod-template.git,
执行:

pod lib create

分析

  • Cloning https://github.com/CocoaPods/pod-template.git into ProjectName.
    创建一个和指定的项目名相同的文件夹,然后将pod-template克隆下拉

  • Configuring TemplateDemo template
    对当前项目进行配置
    pod-template是cocoapods官方提供的一个模板,做了什么呢

pod-template

看一下文件路径


pod-template

Configuring TemplateDemo template做了什么呢?
先找当前路径下configure文件,文件夹内容

#!/usr/bin/env ruby

$current_dir = File.dirname(File.expand_path(__FILE__))

Dir[File.join($current_dir, "setup/*.rb")].each do |file|

require_relative(file)

end

pod_name = ARGV.shift

Pod::TemplateConfigurator.new(pod_name).run

根据上述命令:
可得知,遍历并通过require_relative(file)获得访问在setup文件夹下寻找以.rb为后缀名的文件的权限,
然后Pod::TemplateConfigurator.new(pod_name).run运行TemplateConfigurator文件的内容
看一下setup下面有什么?

setup文件夹
TemplateConfigurator文件内,配置了在终端的显示样式,并通过
 @message_bank = MessageBank.new(self)
 @message_bank.show_prompt
 @message_bank.show_prompt

等方法,引用MessageBank内的命令,具体不再赘述,感兴趣的可以到ruby文件去查看.

延伸

我们可以定义自己的模板,仿照pod-template,配置configure文件,但是相应的参数可以在内部之间定义好,就不需要每次pod lib create时填写各种参数.

执行结果

文件夹目录结构如下

MyLib
  ├── .travis.yml
  ├── _Pods.xcproject
  ├── Example
  │   ├── MyLib
  │   ├── MyLib.xcodeproj
  │   ├── MyLib.xcworkspace
  │   ├── Podfile
  │   ├── Podfile.lock
  │   ├── Pods
  │   └── Tests
  ├── LICENSE
  ├── MyLib.podspec
  ├── Pod
  │   ├── Assets
  │   └── Classes
  │     └── RemoveMe.[swift/m]
  └── README.md
  • Pod 用来存放添加的类
  • RemoveMe 示例类,可以直接删除

注意: 基于自定义pods的实现细节,在向Pod/Classes或者Pod/Assets文件增加类或者更新podspec文件时,需要运行pod install或者pod update

发布私有库

之前的开发和测试就绪后,就要准备发布了.

  • pod lib lintpod spec lint :首先要检测Podspec的正确性
    pod lib lint不会连接网络,而是检查文件格式
    pod spec lint 会读取线上的repo并检查相应的tag
  • pod repo push SPEC_REPO *.podspec --verbose 发布po

相关文章

网友评论

  • Developer_dpx:为啥小姐姐你那么棒呢
  • pFruHMXB:你好 这有创建的是 .a 的静态库,如果我想创建 .framework 的静态库 应该怎么办呢?
    pFruHMXB:@sea_biscute 你好,最终我借助packager 这个来完成 framework的打包了,您说这个我晚点儿试试看!
    sea_biscute:@Cyandnow framework 的静态库是pod在1.4.0之后的新特性,首先你要升级高于1.4.0版本,然后在spec文件内增加s.static_framework =true.
  • 走近科学探索发现:这么好的文章没人评论

本文标题:理解CocoaPods的Pod Lib Create

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