Android架构已经已经越来越成熟,app一般开发工程量也越来越大,解耦重构就成了一样不不得做的事情,重构以后必须用组件化,否则意义不大,而且项目重构以后,为了节约时间,一般公司会采用边开发边测试的模式,这也是组件化的另外一个巨大优势,好了废话不多说我们开始
第一步,引入 config.gradle
为了统一管理各个项目,我们的导包和sdk开发工具必须统一,首先我们要在项目的根目录创建一个config.gradle具体内容格式如下:
ext{
android = [
compileSdkVersion :30,
buildToolsVersion :"30.0.2",
minSdkVersion :19,
targetSdkVersion :30
]
dependencies =[
"arouter-api" :'com.alibaba:arouter-api:1.3.1',
"arouter-compiler" :'com.alibaba:arouter-compiler:1.1.4',
]
}
做完这一步,这个文件里的操作基本已经完成了,然后我们要把config.gradle引用到项目中,我们找到项目根目录的build.gradle,在项目第一行加上
apply from :"config.gradle"
通过这句话我们就把config.gradle和整个项目关联起来了,然后我们可以在项目的lib和app中引用config.gradle的第三方库了
implementation config.dependencies["arouter-api"]
第二步 管理打包生成lib or app
首先在项目根目录中的找到 gradle.properties,在最下面加上一句话
# "集成开发模式" 和 "组件开发模式"的切换开关 true表示组件独立运行,false表示一个library
isRunModule=true
然后在moudle(lib必须做,app壳这一步可以省略)中找到各自的build.gradle文件,添加一句话
if (isRunModule.toBoolean()) {
applyplugin:'com.android.application'
}else {
applyplugin:'com.android.library'
}
这里就是根据gradle.properties中的设置,决定打包lib还是独立项目
然后继续在moudle(app壳忽略这一步)中找到build.gralde。再找到android.下面的defaultConfig加上一句话,如果是lib moudle当做独立项目运行,必须有个包名
if (isRunModule.toBoolean()) {
// 组件模式下设置applicationId
applicationId"com.xxx.xxxx"
}
继续壳组件app moudle中的builde.gradle中dependencies加上一句话
if (!isRunModule.toBoolean()) {
implementation project(':xxxx')
}
表示如果lib moudle不是独立项目运行,就必须引用他们
然后在所有 moudle中的build.gradle的android下的defaultConfig加上一一句话
javaCompileOptions{
annotationProcessorOptions{
arguments = [AROUTER_MODULE_NAME:project.getName()]
}
}
到这里第二步就完成了
第三步 通信
首先我们要初始化ARouter,在基础库的application中
ARouter.openDebug();
ARouter.openLog();
//路由器初始化
ARouter.init(this);
在baseactivity中 或者每个activity中添加一句话
ARouter.getInstance().inject(this);
在具体activity的类名上加一句注解
@Route(path ="/login/LoginActivity")
最后的最后
ARouter.getInstance().build("/login/LoginActivity").navigation();
彻底完成