Android 多Module(组件)开发

来源:互联网 发布:java获取方法执行时间 编辑:程序博客网 时间:2024/05/18 03:03

    看到鸿翔大神订阅号中元斌的组件化之Android路由实现文章,瞬间被组件化的思想给吸引住了,后来又看了App组件化与业务拆分那些事,立马玩一下这个组件化。

我所在公司Android项目的现状:

    基本上都是使用一个总包把所有的代码逻辑都包裹在其中,在包里在进行模块划分,但很多公用的资源交错纵横,出现如果某一项功能删去很麻烦,有的同学(我们都是学习编程的同学)可能会说把入口隐藏就好了没什么麻烦的,但是如果这个功能很长一段时间是无用状态,包括它的代码、它所使用到的资源也都要在工程项目里?这样的话会导致我们的项目包越来越大,但是都删除的你会发现它一点都不简单,先不说代码耦合性很高,就说我们现在项目中的图片资源都是密密麻麻的根本就分不清是哪个功能专有的。记得之前进行改版的时候还使用之前进行添加删除功能,最痛苦的莫过于删除某项你认为没用的文件,其他很多地方都报错,包括string,color等资源都是非常的乱。

测试总结:

    看了几篇组件化的文章之后,我坚决对我们现在的项目进行组件化重构。但必先了解组件化的脾气,于是乎我做了一个demo,下面我对本次实验进行总结一下。

思想:组件化顾名思义就是将每个功能模块分离为一个独立的功能模块。

首先是要创建一个module:


创建之后:


    我这里是将一些常用的工具类分离出来组成的一个module以便可以在以后的项目直接导入使用,这样的话我如果要使用Module中的内容直接进行导入添加依赖就可以使用了。

    这样是很方便的,但是这样主干(主module)会依赖很多module,导致编译加载很慢,我测试的时候AS就直接被整崩溃了。在网上也有很多关于这方面的介绍,我采用的是重建一个工程,在这个工程中完成App一个模块的独立开发和测试,完成之后,将该工程改成libray Module


进行编译,这里需要注意的一点是


    这个地方的applicationId需要删除掉。完成了这些之后。有出现的一个问题,例如我把A为主module,B为子module,C为另一个子module。当我把B和C的module打包成arr文件添加到A(主module)中之后,A就可以使用B和C中定义的类了,但是我并没有在B中添加C的依赖,那我如果在B调用C的类怎么办尼,这个时候就需要路由的概念出现了,这个可以看先我上面提到的组件化之Android路由实现的文章,我简单描述它的原理就是当B和C都添加到A(主module)中我将B和C中需要交互的进行注册,然后B和C只需要添加路由库就可以进行B和C之间交互了。这种思想是不是很棒,反正我是这样觉得。

    但是进行module多组件开发的缺点也显而易见了,就是容易引起冗余代码,还有就是module之间有一些是相互依赖的,比如说C如果没有开发,B怎么使用C中的,这样我们就需要定义一个路由协议了,所以上层对于下层的依赖很强。

    可能文章的文字偏多,很多童鞋不喜欢看文字性的东西,我个人是一个菜鸟还不太喜欢读码,所以把我理解的都转化为文字,便于我以后自己回顾。欢迎大家一起来讨论学习。


0 0
原创粉丝点击