本期目标:创建私有远程仓库并集合到 cocoaPods 中
目的是模仿 cocoaPods 的管理库机制,熟悉私有远程库管理操作
1、创建私有版本库(repo)
这个版本库就如同 cocoaPods 中的repo 一样,用于管理众多代码库的 spec 信息的。如图:
这个是通过 pod setup 命令后生成的,其中 repos中的 master 就是通过 cocoaPods 管理库spec 检索库
当创建完自己的管理检索库后会如下图所示:
首先,创建一个像master
一样的存放版本描述文件的git仓库,因为是私人git仓库,我们选择码云,创建远程私有仓库(因为是免费的)或者也可以在GitHub上创建($7/month)。
以码云为例
创建版本描述仓库将这个远程的私有版本仓库添加到本地cocoaPods 的 repo 中
pod repo add MyRepo https://gitee.com/Jacobv587/MyRepo.git
查看在 Finder 目录 ~/.cocoapods/repos, 可以发现增加了一个 MyRepo 的储存库
查看当前本地 cocoaPods 管理的所有库信息
2、创建代码库
回到码云
创建私人代码库,用于存放你写的工具代码,创建时添加MIT License
和README
将代码仓库clone到本地,添加你的代码文件、仓库名.podspec
描述文件,还有.swift-version
。
clone 代码仓库可以通过 Xcode 执行
进入clone界面
填上代码库 git clone地址
验证用户信息
image.png
完成后如下:
添加文件方法:
.swift-version
文件用来知道swift版本,用命令行创建。
echo "3.0" > .swift-version
.podspec
文件是你这个代码库的pod描述文件,可以通过pod指令创建空白模板:
pod spec create MyAdditions
如下为创建.spec 后修改文件,参照如下更改即可
Pod::Spec.new do |s|
s.name = "MyAdditions" #项目名
s.version = "0.0.1" # 版本号 与 你代码仓库的 tag 对应
s.summary = "MyAdditions的描述"
s.description = "A short description of MyAdditions. just for testing" #这个描述需要比s.summary长
s.homepage = "https://gitee.com/Jacobv587/MyAdditions" #代码仓库主页
s.license = "MIT" # 开源证书
s.author = { "Jacob" => "xxxxx@qq.com" } # 作者信息
s.platform = :ios #指定库是适配平台,否则检测shi,
s.source = { :git => "https://gitee.com/Jacobv587/MyAdditions.git", :tag => "#{s.version}" } #你的代码仓库地址,不能用SSH地址
s.source_files = "MyAdditions", "MyAdditions/**/*.{h,m}" # 让别人集合代码的位置, MyAdditions/**/*.{h,m} 表示 在.spec文件同层级下MyAdditions文件夹下所有的.h和.m文件,**表示问价夹统配符
end
然后开始验证我们的仓库配置是否正确,并按照要求进行修改
cd 到代码仓库
//本地验证库,不会检查 spec 中的 s.source 中的git路径和 tag 信息
pod lib lint
//远程验证,会检查 spec 中的 s.source 中的git路径和 tag 信息
pod spec lint
一般出现错误警告,需要添加 --private 或者 --allow-warnings,就可以通过验证
pod lib lint --private
验证成功后出现
-> MyAdditions (0.0.1)
MyAdditions passed validation.
3、将描述文件推送到版本库
将刚才修改的本地代码库项目,打上标签,推送远程代码仓库,注意打的 tag 号需要与.spec 中的 s.version 描述对应
//cd 到项目目录
//打标签 git tag '0.0.1'
//查看本地标签 git tag
//将本地标签推送到远程库上 git push --tags
最后将我们的代码仓库
的描述信息(.spec),push 到我们的版本仓库
中
pod repo push MyRepo MyAdditions.podspec
这时会对远程仓库进行验证,成功的话就会在 ~/.cocoapods/repos/MyRep
中发现新增的仓库描述信息了
若是出现错误信息
[!] The repo `MyRepo` at `../.cocoapods/repos/MyRepo` is not clean
更新下我们的版本库,
pod repo update MyRepo
再继续上传即可。
pod repo push MyRepo MyAdditions.podspec
的过程就是
- 验证 MyAdditions.podspec 文件
- 拉取远程版本库 MyRepo
- 添加 MyAdditions.podspec 到版本库中
- push 到远程
添加完成后我们就可以在pod中搜索
pod search MyAdditions
-> MyAdditions (0.0.1)
Some category of the framework and UIKit
pod 'MyAdditions', '~> 0.0.1'
- Homepage: https://gitee.com/Jacobv587/MyAdditions
- Source: https://gitee.com/Jacobv587/MyAdditions.git
- Versions: 0.0.1 [MyRepo repo]
(END)
4、私人pod库的使用
使用私人pod库的需要在Podflie
中添加这句话,指明你的版本库地址。
source ‘https://gitee.com/Jacobv587/MyRepo.git’
注意是
版本库
的地址,而不是代码库
的地址
若有还使用了公有的pod库,需要把公有库地址也带上
source 'https://github.com/CocoaPods/Specs.git'
最后的Podflie应该是这个样子
source 'https://github.com/CocoaPods/Specs.git'
source ‘https://gitee.com/Jacobv587/MyRepo.git’
platform :ios, '8.0'
target ‘MyPodTest’ do
use_frameworks!
pod ‘MyAdditions’ #我们的私有库
pod ‘AFNetworking’
end
5、更新代码库时,更新本仓库信息
当代码库代码有变更时,本地代码库及远程库应该需要更新 tag 号,同时需要将本地代码库的 spec 信息上传到私有版本仓库中。
- 本地代码修改后,同时更新 spec 的 s.version 为0.0.2,将本地代码库修改push到远程代码库。
- 本地代码库更新 tag :
git tag ‘0.0.2’
- 将0.0.2的 tag push 到远程库中:
git push --tags
- 往私有远程版本库推送最新 spec 文件:
pod repo push MyRepo MyAdditions.podspec
剩下的就是自己亲自动手试试了。。。
网友评论