随着项目越来越完善,功能越来越多,代码也变得越来越复杂。为了更方便开发,以及多个模块并行开发,之前的模块分包的方式已经不能满足当前的需求,所以组件化开发势在必行。本文介绍了当前比较流行的组件化方案,模块间通信采用阿里的ARoute路由,并且在项目中提供了两种不同的组件化运行的方式,各有优劣,可根据自己的项目来选择不同的方式。
模块解耦,把公共的功能三方及工具类下沉到底层,其他模块为可独立运行的模块
模块间通信采用ARoute方案
组件运行方案一:配置各个模块的.gradle文件,通过配置来区分运行的状态(集成模式、独立模式),以及该模块是以“library”/“application”的身份运行,并且根据运行状态配置对应的资源、清单文件、以及代码文件等。通过更改配置参数来达到是独立模块或集成模式运行。
组件运行方案二:这个方案比较简单,那就是直接添加一个和app同样的“application”模块(暂称之为go_model),用于直接运行独立模块。这样app模块h和go_model都可以运行调试独立模块,并且不用修改配置。可以每个子模块创建一个go_model模块,也可以所有子模块共用一个go_model模块,如果共用一个go_model模块的话需要经常更改go_model模块的配置。
方案一的缺点是每个模块的配置文件中都要添加配置不同模式的代码。并且每次改完配置都要重新编译比较耗时。方案二的缺点是如果每个模块都添加一个go_model模块,会产生很多模块,方便运行,但不利于维护。如果只有一个共用的go_model模块,就需要根据运行的不同模块来改变配置。
如图为简单的项目结构。
手动更改运行状态,然后运行
isModule =false//true:组件化(独立模块)false:集成
apply plugin:'com.android.library'
目前有很多组件化方案,多数是文中这种思路使用ARouter,不过也有向Appjoint等其他的选择,适合的就是最好的,选择一个适合自己项目的组件化,未开发赋能
附《Android核心知识笔记2020》分享
前段时间我和圈子里的几位架构师朋友一起闲聊时的突发奇想,我们在学习Android开发的时候或多或少也受到了一些前辈的指导,所以想把这份情怀延续下去。三个月后,这套资料就出来了,需要这份资料的朋友加Android学习交流群1049273031即可获取。