一、使用背景
项目采用了组件化的架构,主App引用了ARouter,模块module也引用了ARouter,并且主App依赖了module。
dependencies {
implementation 'com.alibaba:arouter-api:x.x.x'
annotationProcessor 'com.alibaba:arouter-compiler:x.x.x'
implementation project(':base')
...
}
二、问题
在module中进行跳转Activity,提示 ARouter::There is no route match the path [], in group [][ ]
,意思是没有找到目标页面。
三、解决方案
- 分析问题时,首先检查了ARouter的基本配置和依赖,都没有问题。
- 然后,网上查询了该问题,有的解释为
使用路由的module之间不得互相依赖
,但是尝试了依然没有解决。 - 一番折腾后无果,遂去翻阅官方文档,终于发现问题:因为module是kotlin语言,所以需要使用
kapt
依赖,不能使用annotationProcessor
,至此问题解决。
// 可以参考 module-kotlin 模块中的写法
apply plugin: 'kotlin-kapt'
kapt {
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
dependencies {
compile 'com.alibaba:arouter-api:x.x.x'
kapt 'com.alibaba:arouter-compiler:x.x.x'
...
}