Cocoapods私有仓库和公共库的创建和使用

Cocoapods私有仓库和公共库的创建和使用

在开始创建和使用之前,你需要了解下面的内容(作者自己总结,可能有不对的地方,请见谅)

repo 代表一个仓库,用来存放 pod 描述文件(.podspec)的地方。

通过 pod repo 命令我们可以看到我们的本地的所有 repo 仓库。其中 URL 表示是仓库的git地址。如果我们没有私有库,通常只会存在一个叫 master 的 repo 仓库。也可以通过 cd ~/.cocoapods/repos 命令,直接到目录查看。

  lymdeMacBook-Pro:~ lym$ pod repo

  master

  - Type: git (master)

  - URL:  https://github.com/CocoaPods/Specs.git

  - Path: /Users/lym/.cocoapods/repos/master

  1 repo

pod 描述文件(.podspec)是用来告诉 pod 怎样去生成我们的组件的文件。我们通过配置这个文件来实现私有库的基本配置。(包括库的名字,来源,资源文件目录等,后面会具体介绍怎么写这个文件)

我们以往的执行 pod install 命令,具体就是从repo库源地址去查找配置文件,如果 repo 库在本地存在,就从本地路径去查找有没有我们要安装的组件,有就安装,没有就报错。一般情况下我们不会在 podfile 文件里面去写 source ‘https://github.com/CocoaPods/Specs.git’ 因为默认会先从本地的 master 这个 repo 库找。如果我们使用私有库就需要去添加这个源,表示先从这个 repo 库地址去查找。

所以当你去使用其他第三方库,出现找不到库的情况的时候,就可以通过 pod repo update 更新这个本地 repo 库。

pod 命令中,我们常用 –help 来查询有哪些命令可以使用, 使用 –verbose 来打印执行过程中的一些信息。例如:pod trunk me –verbose, trunk 命令通常会超时,所以打印更多的信息,可以让我们了解,这个命令是否执行成功,卡住很久就可以关掉了。

创建私有库

新建一个 git 仓库作为存放 pod 描述文件的库,其他人可以通过这个仓库 Git 地址,向 podfile 中添加 source ‘你的存放 pod 描述文件的仓库地址.git’ 来安装你的私有组件库。

通过 pod repo add [自定义私有库名字] [git地址,我用的码云] 命令添加你的私有库,执行成功后,可以通过 pod repo 命令或者打开 ~/.cocoapods/repos 目录查看。

pod repo add MINRepo https://gitee.com/MFNothing/MINRepo.git

创建你的组件库。新建一个 git 仓库,这个仓库用来存放你的组件,要保证你的组件可以直接拖入工程能直接运行,或添加依赖库之后就可以运行。也可以直接使用现成的 git 仓库。

git clone https://gitee.com/MFNothing/MINTemp.git

创建 pod 描述文件(.podspec)。这个文件应该在你的git仓库的一级目录下面。

pod spec create MINTemp

通过 tree -L 2 命令查看文件结构

lymdeMacBook-Pro:MINTemp lym$ tree -L 2

.

├── MINTemp.podspec

├── README.md

└── Tool

├── MINTool.h

└── MINTool.m

1 directory, 4 files

配置 pod 描述文件。用工具(我用的Sublime Text)打开文件。修改

Pod::Spec.new do |s|

  s.name        = "MINTemp"

  # 你的组件库名字,也就是你后面在 podfile 文件中填写的 pod 'MINTemp'

  s.version      = "0.0.1"

  # 版本号,这个看你自己,从低开始定,毕竟后面会更新版本

  s.summary      = "Made by MFNothing"

  # 概要,随便写

  s.description  = <<-DESC

              MFNothing's MINTemp

                DESC

  # s.description 要写,不然会有警告

  s.homepage    = "https://gitee.com/MFNothing"

  # 写一个能够访问到的地址,一般写组件库存放的地址

  s.license      = "MIT"

  # 这里要有一个 license 文件,我是从别的库拷贝出来的,github 上面可以创建这样一个文件

  s.author            = "MFNothing"

  # 作者

  s.source      = { :git => "https://gitee.com/MFNothing/MINTemp.git", :tag => "#{s.version}" }

  # 这里要将 git 后面对应的地址替换成你组件库的 git 地址

  s.source_files  = "Tool/*"

  # 资源文件的路径,这个路径是相对于 .podsepc 文件的路径

  s.public_header_files = "Tool/*.h"

  # s.source_files 公共头文件

  #  s.ios.frameworks  iOS环境下依赖的系统库

end

通过 pod lib lint 来校验 pod 描述文件配置对没有。如果正确会这样显示 :

lymdeMacBook-Pro:MINTemp lym$ pod lib lint

-> MINTemp (0.0.1)

MINTemp passed validation.

提交的你的组件库代码,并打一个 tag,这个 tag 号一定要跟你 pod 描述文件中的 s.version 一致。这样以后你每次修改提交之后,都打一个新的tag,这样就可以生成一个新的版本。(后面会讲怎么删除tag)

git add ./

git commit -m "初始化"

git push

git tag 0.0.1

git push --tag

通过 pod spec lint –sources=https://gitee.com/MFNothing/MINTemp.git 或者 pod spec lint 来校验远程仓库的 pod 描述文件。 pod spec 相对于 pod lib 会更为精确,pod lib 相当于只验证一个本地仓库,pod spec会同时验证本地仓库和远程仓库。

将组件中 pod 描述文件提交给你的 repo 仓库,这样其他人通过在 podfile 中添加 source ‘https://gitee.com/MFNothing/MINRepo.git’ 就可以使用的你的组件了。注意 Podfile 文件中添加的是 repo 仓库地址,不是你的组件的地址。

pod repo push MINRepo MINTemp.podspec

成功之后,就是测试了,新建一个项目,通过 pod init 命令创建一个 podfile 文件,然后编辑它。

source 'https://gitee.com/MFNothing/MINRepo.git'

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '9.0'

use_frameworks!

target 'MINTestPod' do

pod 'MINTemp'

#, :path => '/Users/lym/Desktop/github/MINTemp/MINTemp.podspec'

# 上面注释的这行,当你创建好 pod 描述文件之后,可以通过在 pod 'MINTemp' 后加上这一行,来测试你的组件库是否能够安装成功。

end

创建公共库

执行前面私有库创建的 1 ~ 8 步。

通过 trunk 命令来提交到 cocoapods 仓库中。

通过 pod trunk me –verbose 命令来查看自己有没有注册过。如果没有执行下一步,注册后跳过下一步。 这一步经常应该超时报错,所以多试试。

opening connection to trunk.cocoapods.org:443...

- Name:    MFNothing

- Email:    [email protected]

- Since:    May 17th, 01:01

- Pods:

- MINTool # 这个是作者之前提交成功的,失败了很多次,都是超时。

- Sessions:

- May 17th, 01:01 - September 26th, 02:59. IP: 118.112.56.3

通过 pod trunk register [邮箱地址] [你的用户名] 来注册,会向你填写的邮箱地址发送一封邮件,点击邮件中的链接之后就算注册成功了。然后再试一下上一步的命令,应该跟作者显示的差不多。

进入你的组件库目录,通过 pod trunk push MINTemp.podspec –verbose 将组件库的 pod 描述文件提交到 cocoapods 仓库中。

提交之后,新建一个项目,通过 pod init 命令创建一个 podfile 文件,然后编辑它。

platform :ios, '8.0'

target 'MINApplicationStart' do

pod 'MINTestPod'

end

再提一点,如果想要在其他电脑上也能用上你的库,更新本地 repo 仓库。

pod repo update

成功之后会显示

- Data URL: https://raw.githubusercontent.com/CocoaPods/Specs/1d0a4486fd45cf77cbccfcce1f8d65e376e8bd21/Specs/7/b/1/MINTemp/0.0.1/MINTemp.podspec.json

- Log messages:

- May 21st, 03:14: Push for `MINTemp 0.0.1' initiated.

- May 21st, 03:14: Push for `MINTemp 0.0.1' has been pushed (1.806639077 s).

一些查找资料中遇到的点

tag

删除本地tags

git tag -d + 分支名称就会删除本地的分支

git tag -d 0.0.1

删除远程分支

git push origin :refs/tags/分支名称 就删除了远程分支

git push origin :refs/tags/0.0.1

pod 描述文件其他配置,待测试

  s.subspec 'Serialization' do |ss|

    ss.source_files = 'AFNetworking/AFURL{Request,Response}Serialization.{h,m}'

    po= 'AFNetworking/AFURL{Request,Response}Serialization.h'

    ss.watchos.frameworks = 'MobileCoreServices', 'CoreGraphics'

    ss.ios.frameworks = 'MobileCoreServices', 'CoreGraphics'

    ss.osx.frameworks = 'CoreServices'

  end

s.subspec 创建了一个名字 Serialization 的文件夹

ss.source_files 指明资源文件位置

ss.public_header_files 这个文件夹中的公共头文件

ss.watchos.frameworks 手表环境下依赖的系统库

ss.ios.frameworks iOS环境下依赖的系统库

ss.osx.frameworks osx 环境下依赖的系统库

引用第三方 framework

ss.vendor_frameworks = "thirdSdk.framework"

引用第三方 .a

ss.vendor_libraries = "third.a"

结束

祝好运,pod trunk 命令有毒。后面有时间,作者会再更新,写一些创建新版本组件的内容。

你可能感兴趣的:(Cocoapods私有仓库和公共库的创建和使用)