android组件化开发解决方案(kotiln实现)

2019新年将至,最近总结了一下近一段时间的技术和职业生涯。猛然发现在公司工作已经一年半了,这期间大大小小项目做了一大堆(物流、快递、零担、城配甚至还做过一个小程序)。实际上这一年半个人技术上是突飞猛进的,但是似乎并没有把这个过程中学到的技术认真做过整理。刚好年关个人时间较为充裕,因此打算对自己这一年半的总结和心得分多篇文章整理一下,一方面是为了自己巩固知识,另一方面也希望后来人看到文章能够有所帮助。

个人文风较为简单,文章也更注重过程性的东西而非丰富的扩展(想把某一个知识点发散的研究透彻那么我的文章不适合你,但是如果想画龙点睛似的将一个点搞透,那么选我没错了),技术的东西不会铺垫很多花哨的语言,同是也会尽量把文章写得通俗易懂。有不懂的地方欢迎私信我,看到必回。

废话不多说先把源码奉上:https://github.com/ymeddmn/ThirdStructDemos

文章大纲

  • 组件化是什么
  • 组件化开发优点
  • 组件化开发的技术实现
  • 总结

1、组件化是什么

android中组件化:指的是android中一种支持多模块运行、方便多人开发的项目的结构(个人精辟总结)。

看到这里可能还是不懂,不要纠结继续向下看完再回头你会明白的

2、组件化开发优点

组件化最大的特点就是可以将项目拆分多个业务模块,每个模块对应一个model。在组件化构建项目的方案中我们可以把每个model都生明成一个项目,单独运行一个model。

说到这里那么就要对传统构建项目的方式和组件化构建项目的方式做一番对比了,我画了一张图对比两种构建方式的区别

android组件化开发解决方案(kotiln实现)_第1张图片

想像一个项目,项目中有首页main、购物shop、个人中心user,以此来构建项目观察两者的区别

  1. 传统方式所有业务逻辑放在app的model中,组件化方案中app只是一个壳工程,业务逻辑是分别放在main、user、shop三个model中的(三个模块相互独立,互相不依赖他们之间的通信使用ARouter完成)。
  2. 传统方式的项目一次运行整个项目都要build一遍速度慢,延迟开发时间。组件化的方式可以在壳工程中同时运行整个项目,也可以分别运行三个model中的每一个。实际开发中因为三个model互相不依赖我们可以多人开发多个模块。因此这种方式十分便于项目管理。

3、组件化开发的技术实现

先来看一下本次demo的项目结构

android组件化开发解决方案(kotiln实现)_第2张图片

本次实现中usermodel,loginmodel就是我们抽离出来的业务model,app为壳工程,common为通用model

 

实现组件化主要有两个线索

  1. 如何让model既可以成为一个library又可以成为可执行的model
  2. 不同model之间如何进行跳转

如何让model既可以成为一个library又可以成为可执行的model

在我们的build.gradle上面要应用两个插件

如果model是可执行的model那么就是  apply plugin: 'com.android.application'

如果model只作为一个支持库model那么就是apply plugin: 'com.android.library'

这样问题就简单了,我们只需要根据情况选择引入两者之一就可以做到第一条了,下面看一下配置文件中的实现

 

android组件化开发解决方案(kotiln实现)_第3张图片

首先在项目根目录中新建一个config.gradle,里面配置user、和login两个数组。数组中有isAlone和appid两个值

android组件化开发解决方案(kotiln实现)_第4张图片

然后以login为例,

当isAlone==true时候:选择  apply plugin: 'com.android.application'

当isAlone==false时候:选择apply plugin: 'com.android.library'

这样我们只需要空着这个字段就可以随意切换可运行model和支持库model了

 

不同model之间如何进行跳转

这个需要用到阿里开源的ARouter,具体ARouter的使用不在这里讲解推荐文章  ARouter使用方法


4、总结

这里只说了组件化项目构建的要点,具体实现中还会有很多问题,只要对照demo认真实践相信你也可以和我一样数量掌握这门技术

另外请回到第一点看看是否明白了我给出的组件化定义

你可能感兴趣的:(android,组件化,kotiln)