问题描述:
按照Read.ME中的要求来配置,但是依然无法跳转model。跳转的时候提示“Please check to the action name is correct”,确认Action中的@path和要跳转action中的Path一样,都是ModelName。这仅仅只是个Demo中的第一步而已就已经发现问题了,为后面的进行埋下了深深的阴霾。
问题解决
先说一下解决思路,源码是最好的教师。 先看源码,action()方法是跳转到DRouter中的action(),这里是报“Please check to the action name is correct”的位置 当moduleClassName为空的时候就会触发这个Toast,那么看searchModuleClassName()这个方法是获取moduleClassName 往里面看就发现,是通过扫描dex文件来找到包含com.drouter.assist.module这个包的文件,通过Debug发现确实没有。 这个时候卡住了,不知道如何往下走。经过一番查找发现应该通过注解解析生成的文件没有生成,导致这里为空,那么就推测是不是注解解析器的问题,直接看源码,果真发现根本没有进入这个ModuleProcessor这个解析类。 如何解决? 一顿查找后发现是我的gradle版本过高,gradle的版本是6.0+,不能直接使用自定义注解解析器 解决方案: 在drouter-compiler中的Builder.gradle中注释掉implementation 'com.google.auto.service:auto-service:1.0-rc2' 引入 annotationProcessor 'com.google.auto.service:auto-service:1.0-rc6' api 'com.google.auto.service:auto-service:1.0-rc6' 这两行代码就可以了,这样就可以使用自定义注解解析器。
总结
其实就是gradle版本过高问题,而且库的注解解析版本比较低,不能使用自定义注解解析,需要自己动手解决这个问题。这也算是个使用自定义注解的坑吧。
最后说几句,使用第三方开源库就应该看一些start多的,issue问题解决多的,最好是作者还在维护的,不要看一些小的开源库,不然都是坑。。。