ARouter
ARouter copied to clipboard
真正解决"There is no route match the path [/xxx/xxx], in group [xxx][ ]"
看了一下还是有很多人也遇到这个问题,这边给大家一个思路,一定能解决问题:
- 首先确定你的项目是用java还是Kotlin开发,如果是java,build配置如下: android { defaultConfig { javaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_NAME: project.getName()] } } } } dependencies { implementation 'com.alibaba:arouter-api:x.x.x' annotationProcessor 'com.alibaba:arouter-compiler:x.x.x' } 但是如果是Kotlin开发,那就不是这样配置了,我就是在这里翻车的,具体配置如下: apply plugin: 'kotlin-kapt' kapt { arguments { arg("AROUTER_MODULE_NAME", project.getName()) } } implementation "com.alibaba:arouter-api:$rootProject.ext.arouterVersion" kapt "com.alibaba:arouter-compiler:$rootProject.ext.arouterCompilerVersion" 还需要注意的是你的每个需要跳转的module都要配置哦(不一定要全部module,比如jarlib等,配置干啥呢?),我感觉基本就能解决你的问题了~如果还不行,那继续
- 第二点要注意的是路径配置,每个module的group(默认路径的第一级)一定要不一样。比如你的app module有个页面可以用@Route(path="/app/activity") 然后有个login module中的页面就不要用/app开头了,可以用@Route(path="/add/activity")这样子的。 3.如果上面2点还不能解决你的问题,那建议细心的重新看文档再集成一遍吧~
希望大家都能快速的解决问题,tks
java,build配置 第一次运行页面跳转正常,再次编译就出现no route match the path
同一个module一样也会报ARouter::There is no route match the path [/xx/xxx], in group [xx][ ]
关键还是这句话:每个需要跳转的module都要配置哦
嗯,好像还有挺多人在测试调研的时候犯了一个很容易出的错,看看你是不是。 你的项目有3个module,分别是app、bmodule 、cmodule。 然后你想测app中的页面唤起bmodule、cmodule中的一个页面,测试后好像不行? 不知道你在测测试调研的时候 有没有注意到你的app是否都dependencies了b和c呢? 如果没有这个操作,那么单独的b、c都没有被打包到apk中,怎么跳转呢? 所以一般是app dependencies b和c 然后b、c没有依赖关系,看a是都可以跳转bc,bc是否可以互相跳转。
我遇到的问题真的是各种都有: 1,java.lang.NoClassDefFoundError: Failed resolution of: Lcom/alibaba/android/arouter/routes/ARouter$$Group$$user;这个问题直接开始就崩溃了,这是debug包。 2,同一个组件下的类有些能跳转有些就跳转不了。 The group [user] has already been loaded, trigger by [/user/me][ ] ARouter::There is no route match the path [/user/me], in group [user][ ] 小写的找不到,然后换了个大写的从新运行一下就可以 The group [user] starts loading, trigger by [/user/Me][ ] The group [user] has already been loaded, trigger by [/user/Me][ ] 同样是user底下的 这两个就找不到了 ARouter::There is no route match the path [/user/LROrderCenter], in group [user][ ] ARouter::There is no route match the path [/user/mySkills], in group [user][ ] 真的无语,改的都快崩溃了 麻烦哪位大神帮帮慢 QQ:1336814364
一般这种情况是Arouter 缓存机制造成得。推荐clean或者卸载已经安装得软件。
刚写demo 一直出这个问题。搜到这个回答,都按照要求查了一遍,没发现什么写法上的错误。 然后我发现工程目录依赖关系好像有点问题:aapp bmoudle cmoudle 还有个basemoudle。 basemoudle 引入了依赖。 bmoudle,cmoudle依赖了basemoudle。 然后运行后就提示这个问题。后来bmoudle,cmoudle都引入依赖。把basemoudle中的删掉后就没问题了。
最好是一级路径和二级路径都不相同!!!!我在获取Fragment的时候,由于path的一级路径相同,一直报找不到!!! 太坑了!!!
arouter一些缓存生成的位置比较特殊, 在module的build目录里,执行clean后无法清除arouter的缓存,必须手动删除module的build目录。
是要每个支持跳转的module都必须单独依赖ARouter么? 我只有这样单独添加依赖才能跳转成功
如果多次确定自己的配置正确还出现此错误,考虑可能是当前项目的 gradle 版本和 ARouter 的版本不匹配也会出现此错误。如果你的 gradle 版本较高还出现此错误,请检查 ARouter 的版本,最好使用最新版本。我这边之前就是用了比较旧的版本导致一直出现这个错误,但是配置是完全正确的。记得arouter-api 和 arouter-compiler 都需要升级到最新版本。
同一个module一样也会报ARouter::There is no route match the path [/xx/xxx], in group [xx][ ]
宿主moudle的一级目录名称不要与宿主package的最后一个词重复
遇到这个问题的同学请仔细检查是否在每个
build.gradle
文件中都正确设置了以下代码(kotlin项目,java项目参考修改)kapt { arguments { arg("moduleName", project.getName()) } } dependencies { //... kapt 'com.alibaba:arouter-compiler:1.1.4' }
⚠️注意!
arouter-compiler
这个依赖必须在build.gradle
中声明,只在base_module
中声明然后引用base_module
中引用是无效的!最后这句话解决了我的问题: ⚠️注意!
arouter-compiler
这个依赖必须在build.gradle
中声明,只在base_module
中声明然后引用base_module
中引用是无效的! 调试半天不知道问题出现在,谢谢!
最好是一级路径和二级路径都不相同!!!!我在获取Fragment的时候,由于path的一级路径相同,一直报找不到!!! 太坑了!!!
感谢老哥,我按照你说的改了就好了
我也遇到了,卸载清缓存就好了,不清楚怎么回事
遇到这个问题的同学请仔细检查是否在每个
build.gradle
文件中都正确设置了以下代码(kotlin项目,java项目参考修改)kapt { arguments { arg("moduleName", project.getName()) } } dependencies { //... kapt 'com.alibaba:arouter-compiler:1.1.4' }
⚠️注意!
arouter-compiler
这个依赖必须在build.gradle
中声明,只在base_module
中声明然后引用base_module
中引用是无效的!最后这句话解决了我的问题: ⚠️注意!
arouter-compiler
这个依赖必须在build.gradle
中声明,只在base_module
中声明然后引用base_module
中引用是无效的! 调试半天不知道问题出现在,谢谢!
定义了一个通用的config.gradle 其他module引入可以吗
比较关键的几个点:
-
要理解 arouter-compiler 主要使用了 apt,所以但凡是用到了 !Route 注解的模块,都要 annotationProcesser / kapt arouter-compiler 模块
-
为了防止应用规模变大之后不好维护,设计上不允许不同 module 中存在相同 path 的路由,path 是 /a/b 中的第一段,例子里面就是 a
-
为了优化启动速度,正常情况下 ARouter 只有新装和升级(版本号发生了变化)会重建路由表,所以本地调试的时候,要注意通过 ARouter.openDebug(),让 ARouter 处于调试模式,每次启动均会重建路由表,并且跳转失败会有 Toast 提示,要在 ARouter.init 之前调用才能生效,如果新增页面一直不生效,也可以清除数据试试
-
还有就是 ARouter 是为了实现开发阶段的解耦的,如果最终打包的时候,跳转的目标页面都没有被依赖到 app 中,任谁也跳转不了的
主app是kotlin和java混编的,但是没有用到ARouter,子module作为aar包引入的,是纯java编写的。请问主app中要按照哪种方式配置呢?
主app是kotlin和java混编的,但是没有用到ARouter,子module作为aar包引入的,是纯java编写的。请问主app中要按照哪种方式配置呢?
用java的引用方式是不行的,要用kotlin的引用方式,我跟你的情况是一样的,已经按照这样的方式解决了。
我只有baseModule依赖了,其他module没有依赖一直报这个错,后来每个module都依赖了,就可以了
遇到这个问题的同学请仔细检查是否在每个
build.gradle
文件中都正确设置了以下代码(kotlin项目,java项目参考修改)kapt { arguments { arg("moduleName", project.getName()) } } dependencies { //... kapt 'com.alibaba:arouter-compiler:1.1.4' }
⚠️注意!
arouter-compiler
这个依赖必须在build.gradle
中声明,只在base_module
中声明然后引用base_module
中引用是无效的!最后这句话解决了我的问题: ⚠️注意!
arouter-compiler
这个依赖必须在build.gradle
中声明,只在base_module
中声明然后引用base_module
中引用是无效的! 调试半天不知道问题出现在,谢谢!定义了一个通用的config.gradle 其他module引入可以吗
可以,就是需要在每一个model引入一下
一般这种情况是Arouter 缓存机制造成得。推荐clean或者卸载已经安装得软件。 。。。。 这个还真是 我这死活报这个错,卸载重新装就好了
按照正确配置检查了好几遍还是会报「ARouter::There is no route match the path [//」,清除了 AS 缓存没用。最后卸载了手机上的版本重新安装 OK 了。推测是我第一次忘记打开 ARouter.openDebug(),即便第二次打开了ARouter.openDebug()安装上也没有重建路由表(没有升级版本号)。
我也踩坑踩了一天:我在target 31 上配置 最低版本是21 上的配置,kotlin基本上的配置如下: kotlin组件化开发:ARouter配置 common模块中配置: plugins { *** *** *** id 'kotlin-kapt'//kotlin语言使用注入框架 } dependencies{ ***** //albaba Arouter引入 api 'com.alibaba:arouter-api:1.5.2'
} 业务模块的build.gradle配置: apply plugin: 'kotlin-kapt'//kotlin语言使用注入框架
kapt { arguments { arg("AROUTER_MODULE_NAME", project.getName()) } }
dependencies{ ***** //albaba Arouter引入 kapt 'com.alibaba:arouter-compiler:1.5.2'
}
在 gradle.properties中配置:
kapt.use.worker.api=false kapt.incremental.apt=false 希望能帮助到大家
比如你的app module有个页面可以用@route(path="/app/activity") 然后有个login module中的页面就不要用/app开头了,可以用@route(path="/add/activity")这样子的。 犯了这个错 也是报这个错误
请问以 path 第一段来划分 group 的意义何在?这样会引起很大的坑啊,不同 module 中的第一段 path 内容不能命名成一样的,否则会导致路由表被覆盖。并且往往我们路由的 path 统一维护在一个 global 中,不同 module 都引用这个路由表,这种设计导致如果一个 Activity 被挪动了位置到其他 module 中,则就会出现错误。 天坑!!!
本邮箱不作为工作生活用 请联系 @.***
这么坑
本邮箱不作为工作生活用 请联系 @.***
诚聘网络兼职工资日结!还不错~ 详情请登陆招聘网站http://brorx.cn/?;