美文网首页
iOS 使用码云gitee创建cocoaPods私有库

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

作者: 帅聪哥 | 来源:发表于2019-12-06 17:11 被阅读0次

    前言

    首先跟大家讲个故事哈!话说哥们我做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打开项目.

    image.png

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

    创建的项目目录结构
    cd到Example工程目录下
    cd /Users/goviewtech/Desktop/MyDemoPrintTest/Example
    开始安装cocoapod
    pod install --no-repo-update
    4、给Example安装好cocoapds之后,打开项目进行编译测试一下,通过后进行下一步操作
    5、随便copy一段测试代码,我是将代码文件copy到它的Class文件夹中的。
    image.png
    6、编辑后缀名为podspec的配置文件,使用文本编辑打开就可以了,
    配置文件

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

    之前创建的一个git私有库
    这个图上的私有库是上一个demo创建的,这里就不在继续创建了。
    8、在配置.podspec文件时,将s.source中的路径替换为刚刚创建的git私有库路径,以下图片是上一个demo创建的,请注意。
    最终配置图

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

    image.png

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

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

    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
    

    提交成功后的图片


    image.png
    Sepc管理库,解释如下:

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


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

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


    sepc私有库

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

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


    image.png
    最终操作,将之前的demo项目与MyPrivateSpecs关联起来,其实就是往文件夹中添加了私有库文件的配置文件。

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

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


    image.png

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

    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里面


    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


    image.png

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

    pod spec lint --private
    

    private可传可不传


    验证通过

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

    上传成功
    在cocoapods文件中也出现了0.0.2的版本
    image.png
    在码云的远程库中也添加成功了
    image.png
    至此,更新的也算结束了....

    相关文章

      网友评论

          本文标题:iOS 使用码云gitee创建cocoaPods私有库

          本文链接:https://www.haomeiwen.com/subject/lshegctx.html