侧边栏壁纸
  • 累计撰写 416 篇文章
  • 累计创建 65 个标签
  • 累计收到 147 条评论

目 录CONTENT

文章目录

ARouter路由配置,提示路由找不到的解决方法

Z同学
2021-07-19 / 0 评论 / 0 点赞 / 3,118 阅读 / 1,501 字
温馨提示:
本文最后更新于 2021-11-18,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

问题

集成ARouter的时候如果出现了路由找不到。
我们该如何确定问题?

可以针对配置,进行检查以下几个地方。

1.是否完整添加了依赖库:

defaultConfig{
  ...
  
	//如果是Kotlin与java混编的,javaCompileOptions 可能无法执行,换成下面的
	  javaCompileOptions {
  annotationProcessorOptions {
      arguments = [AROUTER_MODULE_NAME: 					project.getName()]
   }
	}

}

implementation 'com.alibaba:arouter-api:1.5.1'
annotationProcessor 'com.alibaba:arouter-compiler:1.5.1'

2.annotationProcessor是否有启动:

路由配置大部分都是依靠注解来实现。但是程序编译之后注解是需要通过annotationProcessor插件转成实体类。才能在运行时生效的。

image.png

sync project 运行后,没有类似这样的注解出现,说明我们没配置正确。

如果你的项目是Kotlin +Java 混编的。用的Kotlin注解处理器,而不是java注解处理器。

怎么检测?

看build.gradle文件之中是否有: apply plugin: 'kotlin-kapt'

如果有的话,就需要替换配置为:

defaultConfig{
    ...
	kapt {
            arguments {
                arg("AROUTER_MODULE_NAME", project.getName())
            }
        }
}


implementation 'com.alibaba:arouter-api:1.5.0'
    kapt 'com.alibaba:arouter-compiler:1.2.2'


当我们sync Project项目之后,都会在 module/build/generated/source/apt 文件夹或者module\build\generated\ap_generated_sources文件夹下面生成ARouter$$Group$$ 类。 如果这个类生成了,就代表配置成功了。

90%的 提示路由找不到,都是这个原因

3.类是否注册成功

需要检查,启动传的路由地址和类里面标注的路由名称是否一致

@Route(path = "/app/temp")  //确保这个路由地址是传的正确的
public class TempActivity extends AppCompatActivity {

    @Autowired(name = "extension")
    public HashMap<String, Object> extension;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
		//在onCreate 方法之中需要添加inject 初始化
       ARouter.getInstance().inject(this);
    }
}
    

4.初始化配置

class KeyApplication() : Application() {

    override fun onCreate() {
        super.onCreate()
        //有没有在Application 之中进行初始化调用。  这个没初始化好 执行的时候会出现错误。比较好追踪
        ARouter.init(this)
    }
}

ARouter的配置很简单。主要就是关于第二点。配置注解转代码的插件,如果成功了。就没有什么问题了。

0

评论区