iOS组件化开发之私有库搭建

概念理解

私有索引库

私有索引库的作用是存放.podSpec文件的。当你使用pod search AFN时,pod会在本地的索引库中进行搜索。

私有索引库分为本地私有索引库和远程私有索引库,它们是相互对应的。

  • 本地私有索引库

iOS组件化开发之私有库搭建_第1张图片
3.png

其中master 是 CocoaPods 的本地索引库,他是公有的.只要安装过CocoaPods的电脑,都会有这么一个索引库。它对应CocoaPods的远程索引库。
其中ZNBRepo 是本地私有索引库

接下来让我们创建远程私有索引库,并且将远程私有索引库 添加到本地

  • 远程私有索引库

    我在码云上创建了一个远程库,用来做远程私有索引库


    iOS组件化开发之私有库搭建_第2张图片
    3.png
  1. 复制远程私有索引库的地址

https://gitee.com/znbmm/ZNBRepo.git

2.打开终端,将远程私有库关联到本地
pod repo add ZNBRepo https://gitee.com/znbmm/ZNBRepo.git

3.就会发现将远程私有库ZNBRepo添加到本地了

iOS组件化开发之私有库搭建_第3张图片
3

私有代码仓库

私有代码仓库也分为本地私有代码库和远程私有代码库,它们也是相互对应的。

  • 本地私有代码仓库

新建一个名为组件化的文件夹
cd /Users/wjwl/Desktop/组件化
pod lib create ZNBTool
按照提示完成所有配置后会得到一个模板文件
将自己抽出来的组件放到Classes文件夹下

  • 远程私有代码仓库

1.在码云上创建一个名字为ZNBTool的代码仓库
2.修改模板项目ZNBTool中的ZNBTool.podspec文件

iOS组件化开发之私有库搭建_第4张图片
修改spec文件

3.提交本地私有模板组件代码到远程私有代码仓库,并打上tag标签

cd /Users/wjwl/Desktop/组件化/ZNBTool
git add .
git commit -m '创建了一个组件'
git tag '0.1.0' 这个tag 跟 spec 文件中version 一致
git remote add origin <#远程代码仓库地址#>
git push -u origin master
git push --tag

4.对文件进行本地验证和远程验证
cd /Users/wjwl/Desktop/组件化/ZNBTool
pod lib lint --private
pod spec lint --private
5.将验证通过的.podSpec文件加入到本地私有索引库,并上传到远程私有索引库
pod repo push ZNBRepo ZNBTool.podspec
6.在ZNBRepo路径下就会有ZNBTool,并带有版本号

iOS组件化开发之私有库搭建_第5张图片
ZNBTool.png

7.查看远程私有索引库你会发现ZNBTool已经躺在里面了

8.使用终端搜索 ZNBTool
如果搜索不到的话可以尝试
pod setup
还是搜不到的话
rm ~/Library/Caches/CocoaPods/search_index.json
pod setup

使用私有库组件

在Podfile 顶部添加source
source 'https://gitee.com/znbmm/ZNBRepo.git'

iOS组件化开发之私有库搭建_第6张图片
完事了

更新组件

修改ZNBTool.podspec中的version
cd /Users/wjwl/Desktop/组件化/ZNBTool
git add .
git commit -m '创建了一个组件'
git tag '0.2.0' 这个tag 跟 spec 文件中version 一致
git push -u -origin master
git push --tag
pod lib lint --private
pod spec lint --private
pod repo push ZNBRepo ZNBTool.podspec

如果 执行pod repo push ZNBRepo ZNBTool.podspec 报错The repo 'xxxxx' at ../../../../../.cocoapods/repos/xxxx is not clean

可以尝试
pod repo remove <#远程私有索引库名.ex:ZNBRepo#>
再次添加
pod repo add <#远程私有索引库名.ex:ZNBRepo#> <#远程私有索引库地址#>
完成

你可能感兴趣的:(iOS组件化开发之私有库搭建)