怎么简单了解Android模块化

2021-04-30

模块化介绍

Android模块化开发是将项目按照功能分为几个模块开发,主要为了提升开发效率,各个功能相对独立;主要解决项目臃肿、耦合严重,代码经过长时间的开发之后,体积会不断增长,很多新加入的功能都不会动原来的代码,只会往上增加内容,而模块化开发的话就会把通用的这部分提取出来,避免重复引入。

模块化结构

例如我们有一个商场的项目,我们可以按照功能来分模块,登录注册用户个人界面可以作为用户模块单独来开发,商品类别可以作为商品模块来独立开发,购物车也可以单独出一个模块开发,支付和订单同理,这样我们的项目结构就可以利用模块化的思想来构建,有了业务的模块,我们需要给这些业务提供一个通用的第三方库或者资源组件,这样我们可以创建一个功能模块,base模块来负责这些功能,为了业务各模块间可以通信,我们需要封装一个中间模块来完成他们的通信,最后原来的app模块就变成一个壳,把其他模块套入这个app壳中,就可以完成模块化的一个简单搭建了。

1. 宿主层:

不做具体的项目功能实现,只负责集成业务模块,组装成一个完整的APP

2. 业务模块层:

 将项目的每个大功能模块拆分成的一个一个单独的module

3. 中间层:

 此层的作用是为了复用,并且连接各个独立模块

4. 功能组件层:

 项目中常用的功能库,如图片加载、网络请求等

模块间通信

为了实现模块间的数据传递,UI跳转,以及接口暴露,我使用了阿里的ARouter来进行模块间的通信,配合EventBus,Kotlin使用RXBus来使模块间降低耦合的同时可以实现需要的效果

具体可以看github上ARouter的说明。

模块的生命周期管理

match管理模块的生命周期,并且进行统一的绑定和解绑,可以利用lifecycle对其进行操,可以使用rxlifecycle。

模块在发布和调试模式的切换

项目开发时,一般提供调试环境与正式发布环境。在不同的环境中,app的有些功能是不需要用到

的,或者是有所不同的。另外,在模块化开发时,有些业务模块在调试时,可以作为单独的app运行调试,不必每次都编译所有的模块,极大的加快编译速度,节省时间成本。基于,以上种种原因,我们就必须对项目的调试与正式环境做不同的部署配置,然而如果全靠每次手动修改,当模块量达到数十时,则会非常麻烦,且容易出错。所以我们需要尽可能的用代码做好配置。


推荐产品

  • S050 5G AI智能全网通模块
  • YCM019
  • YCM009
  • YCM028
  • SD009
  • S004-MT6580底板+模块