iOS --CocoaPods组件化

前缀

最近弄了一下组件化,并将其托管到码云上并以CocoaPods管理版本的更新迭代!这样在以后的项目中相同的功能、工具不需要再重复的去写,既提高了开发效率,也节省了时间.

虽然好多都是查阅资料来做的,但是中途还是遇到了很多不一样的坑,分享出来大家一起共勉!!

创建工程

在自己创建的文件夹内创建工程,如下:

  pod lib create CDemo

在这里插入图片描述
生成pod工程模板
在这里插入图片描述
打开新建的CDemo工程里的Example,可以看到pods里面,有个ReplaceMe的文件,意思就是要替换它,换成我们自己需要对外提供的类。
在这里插入图片描述

新建一个类,比如CModel,复制粘贴到ReplaceMe同级目录下,并删掉ReplaceMe.m文件

之后cd到Lib/CDemo/Example/文件目录下,执行

pod install

这个时候在Development Pods文件下会多出这两个文件,这就是本地开发的pods文件
在这里插入图片描述

而Podfile的内容其实是
pod ‘CDemo’, :path => ‘…/’
说明他获取的是本地路径

然后删除Example for CDemo里面的CModel类,不然运行会因为类重复报错。
至此,一个组件的本地库就创建完成了

本地使用创建的库

在这里插入图片描述

cd到外部的壳工程,修改podfile
增加:pod ‘CDemo’, :path => ‘LQ/CDemo’

在这里插入图片描述

执行

 pod install

在这里插入图片描述
这样你就可以使用本地的自己写的库里.

如果你的库需要一些其他的依赖库这就需要编辑.podspec
所以我们需要再这里添加依赖
在这里插入图片描述

关联到git上

在这里以在gitee上为例
在这里插入图片描述

在这里插入图片描述

直接关联

cd 到插件目录下,直接执行

git init

初始化 git

git add .

执行git add .的时候,如果发现警告warning: adding embedded git repository: LQ/CDemo之类的,是因为CDemo目录下有它自己的git仓库,它俩是独立存在的,有另外一个git仓库专门管理他,因为它也是一个完整的独立工程,这里我们先忽略它。

然后,提交初始化工程

git commit -m "提交描述"

接下来,我们要让这个工程和刚才在Gitee上创建的Repository关联

git remote add origin https://github.com/****/demo.git

然后,提交初始化工程到远端的master,这里我们用了-f,表示强制提交,否则因为Gitee上还有readme之类的文件,需要解决冲突再pull,比较麻烦,基于是初始工程,直接强制push上去即可。

git push origin master -f

提交的时候会有进度提示,完成后去gitee上刷新,可以看到已经提交上去了

在这里插入图片描述
这样就关联上了

不同的是,他们是组件,需要对外提供依赖关系。所以我们还得多做一步操作,那就是增加podspec文件。
以CDemo为例,执行

git tag 0.1
git push --tags

在这里插入图片描述

在这里插入图片描述

这个tag分支就是将来提供给别人依赖的版本号分支,有了它,别人使用你的组件的时候就可以根据版本号来控制了。

发布到CocoaPods

接下来,使用trunk方式将代码发布到CocoaPods上
首先先编辑一下podspec文件

在这里插入图片描述

改好后,在上传之前,最好先本地检查一下podspec是否合法

执行下面语句

pod lib lint --verbose

如出现警告, 可以用 --allow-warnings来忽略警告

 pod lib lint --verbose --allow-warnings

当出现
在这里插入图片描述
说明通过,可以提交到cocoapods上了
执行

pod trunk push CDemo.podspec --verbose --allow-warnings

如你添加了其他的依赖库还会出现问题的时候需要添加

--use-libraries
pod trunk push CDemo.podspec --verbose --allow-warnings --use-libraries

这样就差不多应该可以解决了!!

成功后搜索一下

pod search CDemo

有时候可能搜索不到,可以更新一下cocoapods.

使用

这样我们将本地使用的podfile重新编辑一下
将:

pod 'CDemo', :path => 'LQ/CDemo'

修改为:

pod 'CDemo'

在这里插入图片描述

在执行

pod install

这样我们再来看依赖库
在这里插入图片描述

本地的依赖消失了
这样就和我们平时使用cocoapods添加依赖库一样了.

猜你喜欢

转载自blog.csdn.net/Q_Li_Mountain/article/details/108419986