iOS 使用码云gitee创建cocoaPods私有库

前言

首先跟大家讲个故事哈!话说哥们我做iOS开发5年了,从外包公司干起,到现在的中小企业,基本上都是独立开发项目,平时也会去看一些最新的技术文档之类的,自认为技术上还算中等哈,毕竟也挺追逐前沿技术的,但是苦命的是有些技术因为工作环境问题没有办法深入研究。

一次很有收获的打击

前几天去面试了一家大型公司,那家伙都是问一些底层问题,有些知道的还能说写。最后问到了组件化开发。组件化开发说白了就是一种架构设计思路,奈何我没有实际经验,被问的一头雾水,最后的结果大家可想而知。当然了我后面也怼了回去:我也问了一些偏门的知识点,面试官不也是一脸懵比,因此大家都是彼此彼此,只是精通的领域各有千秋而已。

在组件化开发中,有一点是必须要会的,那就是使用cocoapods创建私有库。通俗一点讲就是:你单独做某个模块,比如登录、分享模块,然后写好之后打包成库(不打也行),并将其通过cocoapods进行私有化管理。主工程如果要引用这个模块直接通过cocoapods进行管理,这就跟平时通过cocoapods管理第三方库类似了,非常的方便。接下来开始整个流程介绍

创建私有库

1、在终端上移动到你想创建pod库工程的路径,直接先cd到了桌面,并执行pod库的创建。命令如下pod lib create XXXX
2、回车后,系统会问你几个问题:
1.选择创建哪个平台应用
.What platform do you want to use?? [ iOS / macOS ]
2.哪种开发语言
What language do you want to use?? [ Swift / ObjC ]
3.在你的项目中是否创建一个demo工程,为了方便测试,我选择了Yes
Would you like to include a demo application with your library? [ Yes / No ]
4.测试框架选择哪一个我选了none
Which testing frameworks will you use? [ Specta / Kiwi / None ]
5.要不要做视图测试,注意,这里要想集成成功,最好选No,我在导入的时候把这里改成none才算ok了
Would you like to do view based testing? [ Yes / No ]
6.你的类名前缀,指定后所有创建的问题都会加上
What is your class prefix?
完成后的终端图片,在创建好后,系统会自动开启xcode打开项目.

iOS 使用码云gitee创建cocoaPods私有库_第1张图片
image.png

3、给创建的项目中的Example安装一下cocoapod,这步操作主要是为了更新一下,防止后续测试出问题

iOS 使用码云gitee创建cocoaPods私有库_第2张图片
创建的项目目录结构

cd到Example工程目录下
cd /Users/goviewtech/Desktop/MyDemoPrintTest/Example
开始安装cocoapod
pod install --no-repo-update
4、给Example安装好cocoapds之后,打开项目进行编译测试一下,通过后进行下一步操作
5、随便copy一段测试代码,我是将代码文件copy到它的Class文件夹中的。
iOS 使用码云gitee创建cocoaPods私有库_第3张图片
image.png

6、编辑后缀名为podspec的配置文件,使用文本编辑打开就可以了,
iOS 使用码云gitee创建cocoaPods私有库_第4张图片
配置文件

s.version:版本号,默认为0.1.0,这个看你个人喜号更改,但是要记住这个编号
s.summary:简要说明 ,这个一定要更改,不然待会提交会报错,
s.homepage:项目主页,要写成自己的,随便什么网站都可以
s.source:来源库: 需要填写一个git私有库,github,码云都可以的。我用的是码云,因为我刚好有账户,而且别人说github是收费的。
7、这里演示去码云上创建git私有库。注意:这里最好不要勾选创建READMD.md文件,因为后面将本地文件上传的时候会有冲突,我也是图个自在。

iOS 使用码云gitee创建cocoaPods私有库_第5张图片
之前创建的一个git私有库

这个图上的私有库是上一个demo创建的,这里就不在继续创建了。
8、在配置.podspec文件时,将s.source中的路径替换为刚刚创建的git私有库路径,以下图片是上一个demo创建的,请注意。
iOS 使用码云gitee创建cocoaPods私有库_第6张图片
最终配置图

9、再次来到Example文件中,进行pod 更新操作
pod update --no-repo-update
10、更新后,再次打开Example项目,下图可以正常import创建的文件

iOS 使用码云gitee创建cocoaPods私有库_第7张图片
image.png

你们可以将demo跑起来看看能否正常运行。注意,请直接写如创建的类名,因为没有提示

11、验证pod配置文件
在提交到git仓库前需要验证
前往demo路径
cd /Users/goviewtech/Desktop/MyDemoPrintTest
输入验证命令
pod lib lint
只要出现passed validation即表明通过验证

iOS 使用码云gitee创建cocoaPods私有库_第8张图片
image.png

12、将demo项目上传到git私有库中

添加远程地址,即上面创建码云项目的地址,xxxx是码云的用户名,MyDemoPrintTest就是你创建的git仓库名称
 git remote add origin https://gitee.com/xxxx/MyDemoPrintTest.git
添加文件
git add .
提交本地,并写描述
git commit -a -m "第一次提交 版本为0.0.1"
# --allow-unrelated-histories
# git pull origin maste会失败 ,提示:fatal: refusing to merge unrelated histories
原因是远程仓库origin上的分支master和本地分支master被Git认为是不同的仓库,所以不能直接合并,需要添加 --allow-unrelated-histories
git pull origin master --allow-unrelated-histories
推送到码云的项目的master分支上
git push origin master
提交版本号
git tag 0.0.1
push到远程分支
git push origin 0.0.1

提交成功后的图片


iOS 使用码云gitee创建cocoaPods私有库_第9张图片
image.png
Sepc管理库,解释如下:

假如我们~/.cocoapods/repos操作进入文件后,里面有有一个master文件夹,那个里面全部都是cocoapods公共第三方库,因此我们需要新建一个新的库文件,与master同级即可。仔细想一想,cocoapods的远程库文件其实就是在github上,现在我们电脑上安装的cocoapods的公共第三方配置文件已经全部在里面。同理...我们也得建立一个非公共的远程库,且clone下到我们电脑本地,其实就是创建的与master同级的文件,到时候里面全部都是非公开的第三方配置文件。
看一下最终效果图:


image.png
现在开始创建Sepc远程git仓库,创建的原理和上面同步,注意,这时候创建一定要带一个README.md文件,不然后面会无法提交,这个暂时没去深究

下面是在码云上创建的sepc远程git仓库


iOS 使用码云gitee创建cocoaPods私有库_第10张图片
sepc私有库

接下来在终端执行以下命令,可以理解为clone到本地仓库
pod repo add MyPrivateSpecs https://gitee.com/mayouming/MY_Specs.git
其中MyPrivateSpecs就是本地非公开第三方库的文件夹,名字为随便取的,后面的链接就是对应的远程git仓库了。

以上命令执行完毕后,就会在~/.cocoapods/repos目录下创建MyPrivateSpecs文件夹,


iOS 使用码云gitee创建cocoaPods私有库_第11张图片
image.png
最终操作,将之前的demo项目与MyPrivateSpecs关联起来,其实就是往文件夹中添加了私有库文件的配置文件。

pod repo push MyPrivateSpecs MyDemoPrintTest.podspec
这个MyDemoPrintTest.podspec就是你之前配置的文件,叫什么名字看你自己的,文中只是演示。

操作完成后,git远程仓库就长如下这个样子


iOS 使用码云gitee创建cocoaPods私有库_第12张图片
image.png

至此,私有库发布就已经结束了,现在我们可以随便找个安装好cocoapods的项目测试一下,当然你新建也是可以的。
podfile中的书写如下:

iOS 使用码云gitee创建cocoaPods私有库_第13张图片
podfile配置

然后安装即可:

pod install --no-repo-update

现在就可以像普通cocoapdos一样进行第三方管理了。
后续截图就不一一截了,至此讲解结束。
期间有碰到几个问题:
Failed to connect to proxy.server.com port 8080: Operation timed out,一开始我也以为是网络问题,后来我将git网络代理清除即可:
查看是否使用了代理git config --global http.proxy
取消代理git config --global --unset http.proxy

OK!谢谢,终于写完,也算做一个记录吧!后续操作也将继续更新。。。

后续,私有库的更新操作...

1、将更新的内容代码copy到class里面


iOS 使用码云gitee创建cocoaPods私有库_第14张图片
image.png

2、cd 到example目录下pod install 一下,进行安装测试,如果嫌慢可以这样:pod install --no-repo-update
3、提交代码:先cd .. 回到上一层目录,也就是cd 到TestCode目录下

 $git add .
$git commit -a -m "版本更新"
      [master e38226a] 版本更新
$git tag -a '0.0.2' -m "私
      create mode 100644 TestCode/Classes/YMLoginTestController.h
      create mode 100644 TestCode/Classes/YMLoginTestController.m
$git pull origin master --allow-unrelated-histories
      From https://gitee.com/mayouming/TestCode
       * branch            master     -> FETCH_HEAD
Already up to date.
$git push origin master
///版本号要最终和podspec中的版本号保持一致
$git tag -a '0.0.2' -m "私有库第二个版本"
git push --tags

4、提交完成后,在码云中就会显示最新提交的版本0.0.2


iOS 使用码云gitee创建cocoaPods私有库_第15张图片
image.png

5、#####修改podspec文件,将版本号修改至0.0.2,保持提交版本一致
6、验证一下文件,

pod spec lint --private

private可传可不传


iOS 使用码云gitee创建cocoaPods私有库_第16张图片
验证通过

7、更新本地私有的cocoapdos库,也就是前面建立的MySpecs文件。
pod repo push MySpecs TestCode.podspec

iOS 使用码云gitee创建cocoaPods私有库_第17张图片
上传成功

在cocoapods文件中也出现了0.0.2的版本
image.png

在码云的远程库中也添加成功了
iOS 使用码云gitee创建cocoaPods私有库_第18张图片
image.png

至此,更新的也算结束了....

你可能感兴趣的:(iOS 使用码云gitee创建cocoaPods私有库)