组件化开发 ——— 制作私有库

上篇文章大致说了组件化优缺点及内容,现在就针对公共基础组件制作私有库的问题继续搞起来。

我们的原则是:将一个项目组件化拆分掉,一般会拆分一些基础组件、一些功能组件和业务组件。将拆分好的组件放到远程仓库,统一通过Cocoapods进行管理。

我们先来了解一些概念:

如上图所示: 远程索引库、本地索引库、远程代码库、本地代码库。项目先通过拆分demo 中的category的基础组件来说这四个概念。

一、远程索引库

什么是远程索引库?
每创建一个组件都会带有一个 xxx.podspec 的索引文件。专门用来存放这些索引文件的库就叫做索引库。我们需要将这些索引文件上传到远程索引库才能保证其他的同事能够拿来用
复制代码

创建远程索引库( 注:在自己公司的项目创建private的私有索引库, 要是有组件想开源,在github上创建public的索引库即可,私有索引的步骤和pubic的操作方式一样)

远程索引库已经创建成功,可以看到远程索引库的地址,

二. 本地索引库 (本地索引库就是用来存放本地索引文件的库)

1.打开终端 pod repo 查看一下当前有哪些本地索引库(如果你之前没有创建过,应该只有一个master)

2.通过pod repo add <本地索引库的名字> <远程索引库的地址> ,创建本地索引库并和远程索引库做关联(注:本地索引库的名字建议和远程索引库起的名字一样)

3.通过前往文件夹 "/用户/climbwang/.cocoapods "可以查看本地索引库的物理地址:

三、远程代码库 (代码实际存放的远程仓库)

创建远程代码仓库(和创建远程索引库的方式一样),创建一个WMCategoryKit的远程代码库,用来存放WMCategory组件的代码。同样获取到WMCategoryKit组件的远程代码库地址。

四、本地代码库

创建WMCategoryKit组件本地代码库

1.cd到你想存代码的路径, pod lib create <组件名> , 来创建本地代码组件模版库,根据需要做选择:

2.在组件WMCategoryKit的classes路径下放入你想做为组件的代码

3.接着cd到Example下进行pod install (把刚才拖入到classes里的文件夹pod进来)

4.pod成功后,编译组件看是否报错,编译通过后需要修改podspecs索引文件,一般需要修改下面几个问题:

  这块要注意的就是,组件库有没有子文件夹的问题:```没有子文件夹的话,所有类都是只在WMCategoryKit下面,在source_files路径填就可以。有子文件夹的话,需要注释source_files,然后如图,在s.subspec里 填写子目录层级内容。```
复制代码

5.编译运行通过后,提交组件到远程代码库并打tag:

  ```-  git add .- git commit -m “xxx"- git remote add origin 远程代码仓库地址- git push origin master- git tag 版本号 (注:这里的版本号必须和podspec里写的版本号一致)- git push --tags```
复制代码

6.通过pod spec lint (或pod spec lint --verbose --allow-warnings) 命令验证podspec索引文件

7.验证通过后,pod repo push <本地索引库> <索引文件名>

  ```pod repo push WMSpecs WMCategoryKit.podspec```去本地查看:![WechatIMG54](http://cdn.myweimai.com/images/2c7968f9f38e1b964ade05d18838bdb5_1332x376.jpeg)
复制代码

8.然后在需要用到的项目里,修改podfile,把WMCategoryKit组件pod进来(:需要在Podfile中指定组件远程索引库地址,如果不指定默认会从master的索引库查找就会报找不到组件)

然后 pod install 成功后查看项目:

到这里,组件制作私有库并上传到gitlab,完成所有项目都可以pod此组件的功能。

组件化开发 ——— 制作私有库相关推荐

  1. automake生成静态库文件_基于CocoaPods的组件化原理及私有库实践

    轮子为什么会存在 智人能在残酷的进化大战中存活下来,原因之一就是智人懂得将知识沉淀成外物,辅助彼此之间的合作,从而使得整个群体产生了规模效应,即1+1>2的效果. 从一个角度上说,石器时代是基于 ...

  2. 组件化开发,制作Cocoapods Git库

    在项目中,如果项目功能很多而且工程浩大,需要多个技术部门或小组同时进行开发,根据独立功能模块进行分配.多个小组开发模块怎么样快速优雅的进行整合到主项目中呢?这个是时候组件化开发优势就体现出来了,每个模 ...

  3. 【iOS】利用CocoaPods创建私有库进行组件化开发

    之前使用CocoaPods管理过第三方库,前面也有翻译文章介绍过CocoaPods的配置方法,随着项目越来越大,很多公司会使用CocoaPods进行组件化开发,下面利用一个demo介绍一下. ###什 ...

  4. iOS组件化开发实践

    目录: 1.组件化需求来源 2.组件化初识 3.组件化必备的工具使用 4.模块拆分 5.组件工程兼容swift环境 6.组件之间的通讯 7.组件化后的资源加载 8.OC工程底层换swift代码 9.总 ...

  5. Vue.js组件化开发实践

    Vue.js组件化开发实践 前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了一下的内容.首先会对使用Vue进行开发的一 ...

  6. VUE.JS 组件化开发实践

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模 ...

  7. vue组件化开发实践

    前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了一下的内容.首先会对使用Vue进行开发的一些前期需要的技术储备进行简单 ...

  8. iOS组件化开发从开始到完整总结

    一.组件化介绍 需求来源 随着项目规模不断扩大,业务模块增多,开发过程中会有多条产品线(多人或多小组开发不同的功能);如果用传统的开发模式,会导致代码臃肿,编译速度越来越慢,开发效率低下,代码维护成本 ...

  9. git、cocoapod组件化开发常用命令

    git init:      定位到项目,然后初始化git本地仓库 git status:  若出现红色,表示项目中有修改未添加的文件,需要add.绿色正常 git add .     将所有未添加的 ...

最新文章

  1. android 开发环境简书,Android Studio 开发环境快速搭建
  2. profile 文件含义
  3. 请问Pycharm如何实现变量的批量重命名?
  4. Flex Box的技巧合集 #css布局
  5. ubuntu实现简单的划词工具
  6. 高效大规模图像搜索开源实现
  7. 禁止root远程登录及修改ssh默认端口号
  8. Unity3D之UGUI基础10:画布的三种模式
  9. java web 课程设计_javaweb期末课程设计
  10. 温度采集系统c语言设计,温度数据采集系统的设计与实现
  11. 希尔伯特矩阵(Hilbert matrix)
  12. Excel 转 PDF 并添加水印
  13. 如何让RS485总线挂接更多数量的设备?
  14. Linux基础知识------账号和权限管理
  15. 安装了多个java 如何切换java版本
  16. 我讨厌你公事公办的样子
  17. 随机获得map/json中的一组键值对
  18. operate mow 3.15
  19. EESM和MI-ESM
  20. MVC模型和MTV模型

热门文章

  1. 若依管理系统源码分析-导出Excel时怎样通过注解中readConverterExp实现格式化导出列的显示格式(0和1格式化为是否)
  2. ZedGraph怎样在双击图形后添加箭头标记
  3. Linux-编辑器vim与nano的使用
  4. Eclipse中新建SpringBoot项目完成对json、pojo、map、list的请求
  5. JAVA的JDK环境变量的配置JAVA_HOME;PATH;CLASSHOME
  6. 4、SpringBoot 配置和使用定时任务
  7. 用户名或用户域名_给自己的Hexo+GitHub静态博客绑定自己的专属域名
  8. 亚马逊专家课 | 数据体系+用户画像+商品画像系列课(立省 299 元)
  9. 神策学堂“训练营+特训营”,种子学员招募中,来一起出圈呀!
  10. 2017 Alistair Croll 中国行:中西对话精益数据实践前瞻