组件化(第二篇)

作者: AndyYaWei | 来源:发表于2018-12-09 14:52 被阅读642次

组件化

一、本地私有库方案优化
二、远程私有库
三、如何使用远端私有库
四、远程私有库的升级
五、远程私有库依赖问题
六、远程私有库设计优化

一、本地私有库方案优化:

存在的问题?

  1. 需要手动创建podspec文件,
  2. 没有使用git管理或者理解为手动使用git进行管理,
  3. 无法测试,需要再次手动创建测试工程。
  • 优化方案一
  1. 在本地私有库的主目录下创建测试工程(本地私有库创建请参考组件化(第一篇))。
    在这里插入图片描述
  2. 拉取本地库源码文件到测试工程


    在这里插入图片描述
  3. 在测试工程里面选中本地私有库源码文件,右键->Show in Finder,你会发现它们真实存在的路径是本地私有库Classes文件夹下面。这样,我们在测试工程里修改、测试好了,也就代表着我们的本地库测试、修改完毕。
    问题:回想一下我们刚刚做的步骤,创建测试工程、创建Podfiel文件....., 是不是有点复杂?是的吧,那咱们继续看优化方案二。
  • 优化方案二
    借助pod
    在这里插入图片描述
    在这里插入图片描述
  • 终极方案

创建一个Pods库的模版库:pod lib create AYBase


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过命令创建模版库

此时打开测试工程并没有我们的Pods资源库代码,如下图。怎么搞过来?


在这里插入图片描述

通过pod install获取我们的Pods资源库,如下图:


在这里插入图片描述

二、远程私有库

本地私有库缺点:

  1. 需要指明path。因为宿主工程里的Podfile文件指明了私有库路径,一旦宿主工程修位置发生变化,有可能安装本地私有库失败。
  2. 版本升级不好维护。如果本地私有库有两个版本0.1.0和0.2.0。我想安装0.1.0怎么安装?没法安装,因为本地私有库没有tag。
  3. 没办法多人合作开发。因为你这个库放在本地,其他人用不了。

创建远程私有库:
远程表示我的队友也可以去下载,私有代表只有我的队友可以下载,别人下载不了。

  1. 借助平台coding.net
  2. 创建私有索引库 AYSpecs


    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 创建本地索引库 pod repo add AYBase url


    在这里插入图片描述
    在这里插入图片描述 在这里插入图片描述
  4. 创建远程私有库(存放框架源码)


    在这里插入图片描述
  5. 创建一个pod私有库的模版库 AYBase
  • pod lib create AYBase


    在这里插入图片描述
  • 核心代码拖入Classes文件夹中


    在这里插入图片描述
  • pod install 安装测试


    在这里插入图片描述
  • 编写描述文件、本地验证spec


    在这里插入图片描述
    在这里插入图片描述
  1. 上传本地库代码到远程仓库
  • git add .
  • git commit -m "xxx"
  • git remote add origin url (关联本地库和远程库,注意选择ssh?还是https?)
  • git push origin master


    在这里插入图片描述
  1. 上传标签
  • git tag '0.0.1'(和描述文件的版本号保持一致)
  • git push --tags
  • 远程验证spec,pod spec lint 在这里插入图片描述
  1. 提交spec到本地索引库,会自动提交到远程索引库。
  • pod repo push AYBase AYBase.podspec 在这里插入图片描述
    在这里插入图片描述
  1. pod seach AYBase


    在这里插入图片描述

三、如何使用远端私有库

在这里插入图片描述
  1. source '官方路径'(远程索引库)
  2. source '私有索引库路径'(增加私隐索引库)
在这里插入图片描述
在这里插入图片描述

~到此为止,一个基本的远程私有库操作完毕。

总结:此时私有库名称、位置随便改,不会影响使用者。可以独立测试。

四、远程私有库的升级

  • 修改私有库
  1. 基础设置
  2. Bases 、 Tools
  • 升级私有库
  1. 提交代码本地、远程


    在这里插入图片描述
  2. 修改描述文件的版本号


    在这里插入图片描述
  3. 打标签、远程验证spec


    在这里插入图片描述
  4. 提交本地索引库 pod repo push AYBase AYSpec.podspec


    在这里插入图片描述
    在这里插入图片描述
  • 测试升级后的私有库:

// pod install(以前会更新本地索引库、现在不会了)
pod update --no-repo-update(会更新)


在这里插入图片描述

五、远程私有库依赖问题

基础库依赖于其他库,安装后跑不起来,怎么解决?

在这里插入图片描述
在这里插入图片描述

六、远程私有库设计优化

引入问题:我只需要一个base库,还要安装整个库吗?
举例:AYBase里面有Category、Tools等等(后期会更多),现在我仅仅只需要Category里面的功能,我安装AYBase,会不会太大了?
解决方案:
把一个大的基础组件划分为几个子库?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

之后的操作:

  • 提升s.version版本号
  • 提交代码
  • 打标签
  • 推送spec到本地索引库。

未完待续,敬请期待

脚注

生成一个脚注[1].

  • 关于 其CSDN博客地址 ,参考 这儿,
  • 关于 其掘金地址 ,参考 这儿,

  1. 这里是 脚注内容.

相关文章

  • 组件化(第二篇)

    组件化 一、本地私有库方案优化二、远程私有库三、如何使用远端私有库四、远程私有库的升级五、远程私有库依赖问题六、远...

  • 组件化流程详解(二)

    组件化流程详解(一)[https://www.jianshu.com/p/2deca619ff7e] 第二篇主要讲...

  • 封装组件-面向对象

    tab组件化tab组件化代码 图片曝光组件化图片曝光组件化代码 轮播组件化轮播组件化代码

  • Android组件化 - gradle配置(一)

    一、什么是组件化 什么是组件化呢? 组件化、插件化、模块化之间有什么区别呢? 组件化:每个组件都是独立的功能模块,...

  • iOS组件化方案-总结第二篇

    概述 这是iOS组件化方案-总结的第二篇,在本文中我实现了Target-Action方案的Demo,并与第一篇介绍...

  • Android:插件化

    插件化组件化 组件化与插件化的区别 组件化是Android自然提供的,例如分成lib,test组件。插件化是热更新...

  • iOS 组件化实战篇(私有库)

    前沿 本片文章主要讲解我们项目中为什么要组件化 组件化的好处 怎么使用组件化 怎么实现组件化 为什么要组件化 ...

  • iOS组件化

    iOS组件化 iOS组件化

  • vue零基础开发004——todolist组件化

    1.todolist组件化-全局组件 2.todolist组件化-局部组件

  • Android组件化方案思路

    在进行app组件化之前我们要明白什么是组件化?为什么要组件化? 什么是组件化?为什么要组件化? 在项目的体系结构,...

网友评论

    本文标题:组件化(第二篇)

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