一. 组件化定义:
组件化就是一个项目根据业务功能划分成不同的业务模块,每个模块都相当于一个单独的app可以单独编译和运行,模块之间通过路由交互。
二.为什么要组件化?
对于一个大型app来说,版本会不断迭代,功能会不断增加,业务也会越来越复杂,每个业务模块的代码不断增加,这样发展下去,项目的维护和开发人员会都要熟悉整个项目的代码,每次编译都要编译整个项目,严重影响开发效率,也很不利于多人协同开发,所以需要一个灵活的架构来替换单一的工程。使用组件化架构可以把每一个业务模块作为一个组件,每一个组件都可以拆分出来独立运行。
三.使用阿里的ARouter路由来实现组件化:
1.创建主项目:
2.创建组件
就是创建项目的Module:
3.在主项目中依赖组件:
implementation project(':module_user')
4.设置是否单独编译组件开关:
在gradle.properties下添加:
isBuildModule=false
5.配置组件化单独调试
(1)在组件项目的build.gradle中配置:
if(isBuildModule.toBoolean()){//需要单独运行时就作为application来
apply plugin: 'com.android.application'
}else{
apply plugin: 'com.android.library'
}
(2)配置AndroidManifest:
添加一个需要单独运行的AndroidManifest
在组件项目的build.gradle中配置:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
if (isBuildModule.toBoolean()) {
//独立运行
manifest.srcFile 'src/main/alone/AndroidManifest.xml'
} else {
//合并到宿主
manifest.srcFile 'src/main/AndroidManifest.xml'
}
}}
在主项目的build.gradle中配置依赖组件:
if (!isBuildModule.toBoolean()){//组件不单独运行时才加载组件
implementation project(':module_user')}
这时候我们打开单独运行组件的开关:
isBuildModule=true
运行时看到,组件项目就可以单独运行了:
7.组件跳转
这里我们使用阿里的ARouter作为跳转路由
1.添加依赖包:
//阿里路由框架配置
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}}
implementation 'com.alibaba:arouter-api:1.4.1'
annotationProcessor rootProject.ext.dependencies["arouter-compiler"]
2.在根application中添加初始化:
if (isDebug()) { // 这两行必须写在init之前,否则这些配置在init过程中将无效
ARouter.openLog(); // 打印日志
ARouter.openDebug(); // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
}ARouter.init(mApplication); // 尽可能早,推荐在Application中初始化
3.在需要被跳转的activity中添加注解:
@Route(path = "/us/user")
public class UserActivity extends AppCompatActivity {
(注意,该activity需要在AndroidManifest中申明:<activity android:name=".UserActivity"></activity>)
4.简单的页面跳转:
ARouter.getInstance().build("/us/user").navigation();
(注意运行之前需要把isBuildModule设置成false,把module依赖到主项目中,否则会报错:ARouter::There is no route match the path)
组件化的简单使用就到这了,实际项目使用中还需要根据项目需求分组件,还要用到数据传递、数据监听等。