Arouter
一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦
1. 配置及依赖
1.1 java 版的依赖
在每个module中的build.gradle 导入依赖
api "com.alibaba:arouter-api:1.5.1" //路由库 这个在library中导入即可 其它库进行依赖
annotationProcessor "com.alibaba:arouter-compiler:1.5.1" //注解编译器 这个是每个module都需要依赖的
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments = [ AROUTER_MODULE_NAME : project.getName() ]
}
}
}
1.2 kotlin 版的依赖
在每个module中的build.gradle 导入依赖
apply plugin: 'kotlin-kapt'
api "com.alibaba:arouter-api:1.5.1" //路由库 这个在library中导入即可 其它库进行依赖
kapt "com.alibaba:arouter-compiler:1.5.1" //注解编译器 这个是每个module都需要依赖的
defaultConfig {
kapt {
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
}
2. 初始化ARouter配置
2.1 在Application中配置
fun initArouter(){
if (BuildConfig.DEBUG) {
// 日志开启
ARouter.openLog()
// 调试模式开启,如果在install run模式下运行,则必须开启调试模式
ARouter.openDebug()
}
ARouter.init(this)
}
//结束时释放ARouter
override fun onTerminate() {
super.onTerminate()
ARouter.getInstance().destroy()
}
3 路由的使用
3.1 跳转页
//无参跳转
ARouter.getInstance()
.build("group/classpath")
.navigation()
//有参跳转
ARouter.getInstance()
.build("group/classpath")
.withString("android","android")
.navigation()
3.2 目标页
3.2.1 在类上添加Arouter 的路径注解
//路径必须是要两级 例如 /xx/xx
@Route(path = "group/classpath")
3.2.2 如果是带有参数的则需要 注入的初始化
// 调用 inject 方法,如果传递过来的参数含有, 使用 @Autowired 的会自动解析
ARouter.getInstance().inject(this) //写在BaseActivity中一劳永逸
3.2.3 获取传递过来的参数
@Autowired(name = "android")
@JvmField //必须加上,否则无法编译 kotlin 不加会报错
var android: String= ""
4 具体使用看官网地址
https://github.com/alibaba/ARouter
或者镜像地址
https://gitee.com/mirrors/ARouter