• iOS 组件化的创建 -创建 cocoapods 库


    近期研究一些组件化,看了很多网上资料,都不是写的很清楚,所以就写了这篇文章,
    本文参考了
    iOS 组件化
    CocoaPods 创建私有库
    制作 CocoaPod

    一、创建组件

    1.1 生成HJProgress组件
    在指定文件夹然后执行下列代码, 其中 HJProgress 就是你自定义的一个工程名字,也就是你的其中一个组件或者业务模块

     pod lib create HJProgress   
    
    • 1

    image.png

    你想用什么平台??[iOS/macOS] 操作系统
    你想用什么语言??[Swift/ObjC]
    是否要在项目中包含 demo 用来演示组件?[是 / 否]
    您将使用哪些测试框架?[Quick / 无]
    是否要执行基于UI的测试?[是 / 否]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后根据提示,生成 pod 工程模板
    image.png
    并且打开 HJProgress 示例
    image.png

    1.2 打开新建的 HJProgress 替换文件

    工程里的 Example是展示 demo,同级文件夹HJProgress 下面 Assets 展示图片,Classes 展示你的文件(文件名称可改,在.podspec 设置就好),有个 ReplaceMe 的文件,意思就是要替换它,换成我们自己需要对外提供的类。
    image.png
    image.png

    1.3. 之后 到 HJProgress/Example/ 文件目录下,执行

    pod install
    
    • 1

    这个时候在 Development Pods 文件下会出现我们替换的文件,这就是本地开发的 pods 文件
    image.png

    至此,一个组件的本地库就创建完成了。

    建议:

    组件化在你选择需要演示 library 时候会创建,如果需要查看使用内容保留,不需要则慎重删除
    组件化在你选择不需要演示 library 时候也会创建,此种建议直接删除下列文件
    Example文件夹下内容、_Pods.xcodeproj文件

    二、关联 git

    完成了本地 pod 依赖,但是我们肯定不会是个人开发,否则弄这个组件化的意义也不大,所以我们首先得提交到远程,一般公司里都会搭建私有仓库诸如 GitLab、码云等,这里就拿GitHub 来做演示。(注:码云、GitLab 和这操作一样)

    2.1 创建 git 仓库

    在 GitHub 上 Create a new repository(注:我这边创建的是一个公开库,私人库和公开库会有些不同,我会再下面具体说明)
    image.png

    2.1 设置 podspec

    打开组件工程,打开HJProgress.podspec,首先先编辑一下 podspec 文件,修改你的version homepage source dependency,这一部分后续 cocoapods 都会再后面验证的,cocoapods 会出现 error 和 warnings,不过可以忽略 warnings
    另外、非添加到 Assets 图片、xib、图片加载等需要另行设置,我再其他文章有说明,再此就不在一一说明
    .podspec 的具体信息请自行查看 cocoapods官网
    image.png

    2.3 开始关联 git

    cd 到刚刚创建的组件下
    image.png
    依次执行
    初始化 git (注:一般不用,首次创建会自动添加 git,没有上图.git文件时候需要初始化,command + shift + . 展示、不展示 隐藏的文件夹)

    git init
    
    • 1

    提交初始化工程 (注:每次新增提交执行)

    git add .
    
    • 1

    添加你提交代码的信息

    git commit -m "init project"
    
    • 1

    接下来,我们要让这个组件化和刚才在 git 地址相关联 (仅关联一次)

    git remote add origin https://github.com/Nevergive-up/HJProgress.git
    
    • 1

    然后,提交初始化工程到远端的 master

    git push origin master
    
    • 1

    image.png

    3.然后设置一下版本号(注:提交成功之后再设置版本号,要不然版本号会不对照的)

    git tag 0.1.0
    git push --tags
    
    • 1
    • 2

    成功后,如果你使用组件化,并不准备发布到 cocoapods,请忽略下面的 5-6 步骤
    5.接下来,使用 trunk 方式将代码发布到 CocoaPods 上,
    在上传之前,最好先本地检查一下 podspec 是否合法:(注:这个要耐心等待一段时间)
    执行下面语句,

    pod lib lint --verbose
    
    • 1

    私人库执行下面语句 --allow-warnings 忽略警告

    pod lib lint --verbose --allow-warnings
    
    • 1

    HJProgress passed validation.
    如果出现 passed validation,说明通过,可以提交到 cocoapods 上了
    如果没有,就需要看一下你的 .podspec 中哪里有 error 或者 warnings,改正之后再次验证
    然后开始上传到 cocoapods:(注:这个要耐心等待一段时间)

    pod trunk push HJProgress.podspec --verbose
    
    • 1

    私人库执行下面语句

    pod trunk push HJProgress.podspec --verbose --allow-warnings
    
    • 1
    但是你可能收到下面的问题

    image.png
    第一次使用,需要用邮箱注册

    注册格式
    pod trunk register  邮箱  '昵称'
    
    • 1

    下面是我的注册方式,以及成功提示,提示后,你去自己邮箱点击链接就可以执行下一步
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LVSptYfx-1659941908375)(https://upload-images.jianshu.io/upload_images/1162636-a8ea4b2e63e0bae3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

    首次提交成功截图(注:虽然名称不对,我能说之前忘记截图了吗?总之,你首次上传成功之后出现这种的提示,)
    image.png

    6.成功后,就可以 pod search 到我们提交的库了,成功之后 cocoapods 也会给你发邮件通知的(无论是新建还是更新)
    可以再
    [cocoapods 的 spec 库中查看到] (https://github.com/CocoaPods/Specs/commits/master) 查到我们上传的库,无论上传还是更新、私人库还是公开库都可以搜索到
    image.png

    ps:如果搜不到,不是没传成功,是我们的本地搜索库没更新,可以先删除~/Library/Caches/CocoaPods 目录下的 search_index.json 文件或者 pod repo update 一下
    终端执行。(注:私人库好像搜索不到,公开库我的也没有搜索到,我的公开库第二天才搜索到,大概要等一段时间吧)
    这边有我创建库时候遇到过的问题:cocoapods 创建库的报错汇总

    7.最后,私人库使用方法为:

      pod 'HJProgress',   :git=> 'https://github.com/Nevergive-up/HJProgress.git',             :tag=> '1.0.0'
    
    • 1

    公开库需要先 pod repo update 更新下,就可以照常使用了

      pod 'HJProgress' 
    
    • 1

    删除 cocoapods 仓库见组件化cocoapods仓库删除(填坑)

  • 相关阅读:
    简析 Linux 的 CPU 时间
    华为机试 - 最大化控制资源成本
    linux 1
    手把手教你在项目中引入Excel报表组件
    13. React 声明组件有哪几种方法, 有什么不同?
    蓝桥杯 使用sort排序(c++)
    华为数通方向HCIP-DataCom H12-831题库(单选题:181-200)
    【游戏客户端】制作节奏大师Like音游(上)
    Vue2 element selection组件设置默认选项
    从零开始学习软件测试-第44天笔记
  • 原文地址:https://blog.csdn.net/u014651417/article/details/126227825