2023 Android 模块化完整方案实现

本文介绍了如何实现Android模块化的完整方案,包括基于货拉拉开源的TheRouter进行模块间的跳转、数据传递和通信。文章详细讲解了module的application实现、动态注册路由、编译时注解路由、路由引导模块和moduleEventBus的使用,旨在提高开发效率和代码维护性。
摘要由CSDN通过智能技术生成

1 模块化实现(module+TheRouter)

本套模块化方案实现来源于公司的业务需求,因为公司业务太多,代码越来越臃肿,越来越难维护,为了提升开发效率,减低代码的维护成本,所以采取了模块化开发方案。
既然是模块化开发,必然要考虑到各个module的开发,调试,迭代拓展及维护,module之间不仅需要做到业务代码隔离,还需要方便的跳转(路由引导模块),方便的传递数据(包括大容量的数据),能够独立编译调。最后,各个module,完成之后,一起打包到主APP即可。

2 本套模块化方案实现基于货拉拉开源的TheRouter实现,特点有

  • 支持module单独作为Application编译调试
  • 支持module在debug和release状态下对Application的调用方法完全一致,
  • 支持动态注入路由
  • 支持注解方式注入路由
  • 支持module之间传大容量的数据
  • 路由引导模块:自动生成module之间的跳转调用方法
  • moduleEventBus:实现module之间通信

3 项目代码主体架构设计

app: 一个空壳,本身不实现任何业务逻辑,最终打包成完整的release APK
moduleshop:实现shop相关的业务逻辑,可单独编译成APK
moduleuser:实现user相关的业务逻辑,可单独编译成APK,和其它module通过router通信
routerguidercore:为各个module生成自动调用的方法
moduleEventBus:实现module之间通信

4 代码实现方案

4.1 module的apllication实现

我们希望实现以下功能

module能单独作为Application编译
module有自己的Apllication,并在里面初始化一些第三方SDK服务
module在debug和release状态下,业务层代码对application方法调用完全一样
module在release状态下,能够调用主App的application

4.1.1 首先gradle配置如下配置

def isDebug = rootProject.ext.isDebugType
if (isDebug) {
    apply plugin: 'com.android.application'
} else {
    apply plugin: 'com.android.library'
}

这样,在开发时,是一个application,在发布时,是一个library。处于debug状态时,通过 ./gradlew :moduleuser:assemble(mac)命令即可编译打包。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值