组件化极简方案--双方案可选

简介

随着项目越来越完善,功能越来越多,代码也变得越来越复杂。为了更方便开发,以及多个模块并行开发,之前的模块分包的方式已经不能满足当前的需求,所以组件化开发势在必行。本文介绍了当前比较流行的组件化方案,模块间通信采用阿里的ARoute路由,并且在项目中提供了两种不同的组件化运行的方式,各有优劣,可根据自己的项目来选择不同的方式。

思路

  1. 模块解耦,把公共的功能三方及工具类下沉到底层,其他模块为可独立运行的模块
  2. 模块间通信采用ARoute方案
  3. 组件运行方案一:配置各个模块的.gradle文件,通过配置来区分运行的状态(集成模式、独立模式),以及该模块是以“library”/“application”的身份运行,并且根据运行状态配置对应的资源、清单文件、以及代码文件等。通过更改配置参数来达到是独立模块或集成模式运行。
  4. 组件运行方案二:这个方案比较简单,那就是直接添加一个和app同样的“application”模块(暂称之为go_model),用于直接运行独立模块。这样app模块h和go_model都可以运行调试独立模块,并且不用修改配置。可以每个子模块创建一个go_model模块,也可以所有子模块共用一个go_model模块,如果共用一个go_model模块的话需要经常更改go_model模块的配置。
  5. 方案一的缺点是每个模块的配置文件中都要添加配置不同模式的代码。并且每次改完配置都要重新编译比较耗时。方案二的缺点是如果每个模块都添加一个go_model模块,会产生很多模块,方便运行,但不利于维护。如果只有一个共用的go_model模块,就需要根据运行的不同模块来改变配置。
     

实例

如图为简单的项目结构。

方案一

创建一个配置文件,用于统一配置项目中的版本号及参数

app模块中的配置

各个子模块中的配置

运行

手动更改运行状态,然后运行

isModule = false // true:组件化(独立模块) false:集成

方案二

创建go_model模块

子模块de设置

apply plugin: 'com.android.library'

运行

总结

目前有很多组件化方案,多数是文中这种思路使用ARouter,不过也有向Appjoint等其他的选择,适合的就是最好的,选择一个适合自己项目的组件化,未开发赋能

猜你喜欢

转载自blog.csdn.net/qq_43257419/article/details/88720994