1.使用说明
官网
https://github.com/alibaba/ARouter/blob/master/README_CN.md
阿里巴巴自研路由框架,主要解决组件间、模块间的 界面跳转 问题
1.从外部URL映射到内部页面,以及参数传递与解析
2. 跨模块页面跳转,模块间解耦
3.拦截跳转过程,处理登陆、埋点等逻辑
4.跨模块API调用,通过控制反转来做组件解耦
- 添加依赖和配置
defaultConfig {
minSdkVersion 24
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
/*----------添加位置----------*/
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
}
- 配置
dependencies {
implementation ('com.alibaba:arouter-api:1.4.1') //ARouter依赖
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2' //ARouter依赖
...
}
- 3.初始化SDK
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
ARouter.openLog(); // 打印日志
ARouter.openDebug(); // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
ARouter.init(this); // 尽可能早,推荐在Application中初始化
}
}
- 4.添加注解-配置路径(无参)
添加注释(Add annotations)
目标页面添加@Route注解
path:模板页面路径,必须以斜杠开头两级以上路径
group:页面组,默认为module名作为命名
@Route(path = "/main/MainActivity")
public class MainActivity extends AppCompatActivity {
...
}
- 5.跳转
//Activity跳转
ARouter.getInstance().build("/Xxx_module/XxxActivity").navigation();
//Fragment引入
Fragment fragment = (Fragment) ARouter.getInstance().build("/Xxx_module/XxxFragment").navigation();
- 5.1跳转携带参数
ARouter.getInstance().build("/test/1") .withString("key3", "888") .navigation();
- 6.ARouter 和 Calces结合使用
特别注意事项:
app {
applicationName '.App'
modules ':news',':shop'
}
6.1 把一个项目变成一个module
本身的app也要变从module
apply plugin: ‘calces.modules’