ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Android 架构 - 组件化

2026/9/26 8:03:44 拓冰建站 浏览量
Android 架构 - 组件化

一、概念

组件化是基于可重用目的,对单个功能进行开发,提升复用性降低耦合度。多个功能组件起来就是一个业务组件,多个业务组件组合起来就是一个应用,因此去除了模块间的耦合,使得按业务划分的模块成了可单独运行的业务组件。(组件化只是一定程度上的独立,还是依附于整个项目中,想完全独立详见插件化)

  • 功能复用:每个组件都是一个单独的功能,可被不同的模块甚至不同的应用所使用。
  • 提高效率:每个组件都是一个可单独编译运行的APP,由于拆分使得代码量少,调试起来快。
  • 协同开发:组件之间相互独立,使得不同的开发人员能专注于各自的功能开发互不影响。

1.1 需要考虑的问题

组件分层、切换模式按需编译、组件通信(路由框架)、组件生命周期(组件在应用中存在的时间,组件是否可以按照需求动态使用,涉及到组件的加载卸载等管理问题。)

1.2 插件模式

在组件的构建脚本 build.gradle 中指定,指定为集成模式(Library)可以被其它组件调用,指定为组件模式(Application)可以独立运行调试。

com.android.application项目构建后输出 apk 包,在调试时是一个应用能单独编译运行。
com.android.library项目构建后输出 aar 包,在打包时是一个库文件集成到项目中。
com.android.test配置一个 Android Test 工程。
//写法一(和别的一起写)
plugins {id 'com.android.library'id 'org.jetbrains.kotlin.android'
}
//写法二(分开写)
apply plugin: 'com.android.library'

1.3 创建组件

File→New→New Module。业务组件需要调试选择【Phone & Tablet】,功能组件(最后还是通过业务组件来调试)基础组件只用来集成选【Android Library】。 

二、结构划分

依赖关系是上层依赖下层,修改频率是上层高于下层。对于业务组件由于存在页面跳转、方法调用、事件通信等问题需要使用路由通信,其它层组件不存在耦合问题封装成 Library 即可。

app壳主工程,应用的入口,将业务组件打包成一个APP(打包环境、签名、混淆、主题等配置工作)。
业务组件业务组件之间无直接关系,通过路由进行通信。既可以作为 Application 单独编译运行调试,又可作为 Library 集成到项目中。(主页、消息、商城)
功能组件对公用的功能进行封装。非必须层,业务组件可以直接依赖基础组件去实现功能。(支付、分享)
基础组件实现路由、一般是第三方框架、第三方SDK,修改频率极低。(Retrofit、Glide)

三、统一配置

3.1 创建并引入 config.gradle

创建方式是对 Project 的 build.gradle 使用 Ctrl+C 和 Ctrl+V,命名为 “config.gradle” 清空里面的代码并同步一下,然后在 Project 的 build.gradle 中引用刚才创建的文件。

3.2 配置组件模式切换的全局变量 isDebug

四、搬空app壳

4.1 module_core

4.2 MainActivity

将 app 中的 MainActivity.class 和 activity_main.xml 剪切至 module_core 中,并将 AndroidManifest 中的 MainActivity 注册(包含程序入口)也剪切至 module_core 中只保留 <application> 标签。

4.3 AndroidManifest

每个组件都会有自己的清单,最终会打包合并成一个文件,需要解决属性冲突。分别对 app 的 <manifest> 和 <application> 添加如下代码。

manifest 标签xmlns:tools="http://schemas.android.com/tools"
application 标签tools:replace="android:label,android:icon,android:theme,android:allowBackup"

4.4 build.gradle 

四、