~/.cocoapods/repos
公司的项目正准备组件化开发,最近研究了一下CocoaPods建立私有仓库,分享一下
先屡一下思路
大致分为以下几步:
- 本地建立一个索引库Spec Repo,映射到远程仓库(将来使用该仓库里面的.podspec文件定位到相应的代码)
- 创建pod工程(实现具体的组件代码)
- 生成spec文件
- 向本地的Spec Repo提交spec文件
- pod新的文件
<1>.本地创建索引库
官方的pod其实就是一个仓库里面放了很多开源的Spec Repo(关于如何创建cocoapods这里就不做说明了)假设你已经安装好了cocoapods 当cd 到~/.cocoapods/repos可发现如下截图那个master中就是官方的Spec Repo所在
看到这个目录之后我们要做的第一步就是在repos目录下建立属于自己的私有Spec Repo用来管理我们的代码
在终端运行
#pod repo add [本地repos的名称] [远程仓库的地址,这里可以用开源中国的,公司自己的代码管理平台地址等等]
$ pod repo add DemoSpec https://XXX.git
运行完上面的代码重新cd 到~/.cocoapods/repos可以发现刚刚建立的文件以及可以看到了
看你这个说明本地的私有Spec Repo已经搭建好了
<2>创建pod工程
这里没什么好说的,就是自己本地找个目录创建一个新的工程,可以使用pod的,有旧的项目的话更简单了(这里不做过多的讲解)
<3>生成spec文件
cd到第二步建好的工程下运行如下命令
#$ pod spec create [项目sepc的名字] [代码的远程仓库的地址和第一步的地址不一定要一样,如果不一样的话如果有多个项目的话可以共用一个soure]$ pod spec create PodTestSpec https://xxx.git
成功以后会看到
Pod::Spec.new do |s| s.name = "PodTestSepec" #podsepc名称 s.version = "1.0.0"#版本号 s.summary = "year descr."#框架的妙手 s.homepage = "https://www.baidu.com"#写你主页的地址 这里是我随意写的 s.license = "MIT" #通行证 s.author = { "fangshufeng" => "[email protected]" } s.platform = :ios, "7.0" s.source = { :git => "地址二", :tag => "1.0.0" }#地址二写的就是步骤3写的地址 tag是版本号 s.source_files = "podTest/**/*.{h,m}"#文件的目录 s.resource = "podTest/podTest.bundle"#文件的资源 包括图片什么的 s.requires_arc = true end
此时可以push本地的代码到远程的仓库一次了 记得打一个tag号
cd 到建好的工程下验证一下写好的spec文件
pod lib lint
验证通过后继续往下
<4>向本地的Spec Repo提交spec文件
$ pod repo push DemoSpec PodTestSpec.podspec #前面是本地Repo名字 后面是podspec名字
完成之后这个组件库就添加到我们的私有Spec Repo中了,可以进入到~/.cocoapods/repos/DemoSpec目录下查看
├── LICENSE ├── DemoSpex │ └── 1.0.0 │ └── PodTestSepc.podspec └── README.md
再search命令查看
$ pod search PodTestSpec -> PodTestSpec (0.1.0) year descr. pod ‘PodTestSpec‘, ‘~> 1.0.0‘ - Homepage: https://www.baidu.com - Source: 地址二 - Versions: 1.0.0 [DemoSpec repo]
到此我们的私有pod以及制作好了
<5>pod的使用
另外新建一个工程
在podfile中加入
# Uncomment the next line to define a global platform for your project source "地址一" platform :ios, ‘7.0‘ target ‘hh‘ do # Uncomment the next line if you‘re using Swift or would like to use dynamic frameworks # use_frameworks! pod ‘PodTestSpec‘, ‘~> 1.0.0‘ end
好的 到此一个私有的pod弄完了