Android组件化

2018-05-09  本文已影响0人  on_i_on

Android组件化方案 - CSDN博客

先上链接,我也是看着这篇博文进行的搭建。主要是跟着这篇文章对一些具体的细节明确并且加上自己的一些理解,为了方便自己回顾就依然按照博文的思路去理清自己的思路。

1、为什么要项目组件化

组件化下的各个模块可单独运行,这一点带来的好处博客里都有说明。

2、如何组件化

APP壳工程依赖各个模块,同时有一个最基本的Common模块供给各个模块依赖,Common里封装了最基本的一些方法以及各个模块都要用到的东西。

3、组件化实施流程

步骤以及一些描述上的原因可以看博文,我这里做一些细化,主要是方便自己看。

1)组件模式和集成模式的转换

第一步 第二步

在第二步中,我们会发现新建的module并没有gradle.properties文件,这个可以直接copy壳工程的文件,声明的这个变量isModuleOne=true适用于区分该模块扮演的角色,因为组件花开发,各个模块既可以作为库,也可以作为单独的工程自行运行。区分的方式见下图:

模块的角色切换

我们在新建的模块的gradle文件添加了红框框里面的代码,这样就可以灵活的实现角色的切换。

2)组件之间AndroidManifest合并问题

组件模块在库和工程两种角色切换时也会引起其他的一些问题,如:AndroidManifest.xml,  在作为工程的时候我们自需要一个跟一般工程一样的AndroidManifest.xml,但是作为库的时候就不行了,毕竟一个工程只能有一个AndroidManifest.xml,而他必然是在壳工程里面,所以我们可以通过gradle来区分。

新建一个AndroidManifest.xml

如图我们在组件module里新建一个文件夹,在这里再新建一个AndroidManifest.xml,同时在gradle文件里通过isModuleOne这个变量来区分,如果是库的角色我们就引用module下面的AndroidManifest.xml,反之使用原本的AndroidManifest.xml。这两个的区别在于库角色下的AndroidManifest.xml啥也不需要,如图:

空空如也

原本的还是熟悉的样纸,如图:

熟悉的样纸

3)全局Context的获取及组件数据初始化

当组件模块作为一个工程的时候自然需要一个全局的上下文,这里就需要一个自己的Application,如何作为库的时候去掉这个Application,依然是通过gradle。首先让我们建一个Application:

application 如何作为库的时候去掉application

4)library依赖问题

如博文所写,common依赖就可以了,其他各个组件模块就不用依赖了,组件模块依赖common就可以了,但是Aroute是不可以的,在我们自己的项目里面已经证明了这一点。

5)组件之间调用和通信

这一点我们的项目用的是Aroute:annotationProcessor'com.alibaba:arouter-compiler:1.1.3', 这一点的具体用法争取下一篇文章进行介绍。

6)组件之间资源名冲突

这一点我最深刻的体会就是一次同时复制了我的布局文件,然后名字啥也没改,自己模块运行感觉不到任何错误,一合到壳工程就出现错误了,第一次还真费了一些时间去发现。

我想声明的基本就是这些,其他的连接的博文还是听清楚的。

上一篇下一篇

猜你喜欢

热点阅读