Android组件化开发

本文介绍了Android组件化开发的实现过程,包括组件的独立运行配置、Gradle依赖设置、AndroidManifest调整以及组件间通信的中介管理。通过创建一个组件化Demo,详细讲解了如何在组件与主应用之间进行低耦合的交互,强调了使用共同库commonlibs作为通信桥梁,确保每个组件的Application对象统一管理。

最近在学习Android组件化开发,自己写了一个demo,以此记录一点学习成果吧。我们在实际开发中,一个app一般都有很多个模块组成,一般的做法都是将这很多模块放入一个module中,随着我们的业务逻辑越来越复杂,开发调式并不是很方便,这时候我们就需要组件化,将每个模块都当作一个组件module,每个module都可以独立运行,这样既方便调式,也便于协同开发。下面我们就讲一下怎么来组件化。

首先来看一下项目的整体结构

在main app中需要持其他两个组件的依赖,直接添加会报错,因为组件也是可以单独运行的,所以要在gradle.properties文件中进行配置

接下来在main组件的gradle文件中进行配置,当作为组件时直接引入,作为项目时就不依赖

接下来在两个组件的gradle文件中进行配置,这里需要配置logincomponent为library还是application,编译版本compileSdkVersion,applicationId是否配置,以及minSdkVersion和targetSdkVersion,这是为了统一整个项目的编译和运行环境,这里还需要添加对commonlibs的依赖,这一步一定不能忘记哦。

配置完组件的gradle文件之后还需要配置一下AndroidManifest文件,logincomponent作为单独app运行时,这里需要单独建一个文件夹放入manifest文件

当logincomponent作为组件时manifest需要如下配置

minecomponent的配置和logincomponent是一样的。至此,我们的组件基本环境已经配置完毕,接下来就是组件和main app怎么通信,直接从main app中跳转到组件?当然这样也是可以的,但是这样的话main app和组件的耦合度就太高了,所以我们就需要找一个中介commonlibs,用它来负责main app和组件的通信。作为一个完整的app来说,我们的入口只有一个,因此我们application也只能有一个,所以我们需要将所有组件的application管理起来。

这里主要将组件的app名称添加进来,接下来在每个组件的application中初始化application对象,我们定义一个接口,让所有组件的application来实现

在main app中进行初始化,这里通过反射来调用IAppcomponent的init方法将当期的application传入,这样就保证所有组件持有的application对象为main app

接下来我们就来实现mainapp和组件间的通信,我们在libs中定义一个接口

主要有两个方法,一个是activity跳转的方法,一个是展示fragment的方法,那么谁来实现此接口呢?当然是我们的logincomponent

看到这里,大家是不是很熟悉这一段代码,就是我们activity跳转的标准代码,接下来我们需要一个serviceManager来管理这些页面跳转的service

然后需要在组件的app中需要进行初始化

接下来在我们的mainapp的activity实现跳转到logincomponent的入口activity

补充一下每个组件都需要添加对commonlibs的依赖,这样我们一个组件化的小demo就写完了。最后附上源码https://github.com/allenlzhang/CarltComponentDemo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值