Skip to content
gaowei edited this page May 14, 2023 · 33 revisions

一、DRouter介绍

Android路由框架,基于平台化解耦的思想,服务于组件化间通信

主流框架间对比

特性 ARouter WMRouter DRouter
依赖 2个lib+(1个plugin) 2个lib+1个plugin 1个lib+1个plugin
路由注册 注解处理器 注解处理器+插件写文件 扫描全部类
加载路由表 运行时扫描dex
反射实例类
性能损耗大(现已优化)
运行时读文件
反射实例类
性能损耗中
运行时new路由类
无反射
性能较好
子线程初始化
注解正则表达式
Activity指定拦截器
导航到View
Fragment路由
回调式onActivityResult
路由异步完成
Service指定构造器 ⚠️
Service多维过滤器
高性能跨进程
共享内存
VirtualApk
自升级插件

⚠️表示虽然支持,但是使用繁琐复杂

二、接入方式

1. 添加依赖

1.1 根目录下的build.gradle下添加插件依赖

buildscript {
    dependencies {
        classpath "io.github.didi:drouter-plugin:x.x.x"
    }
}

1.2 在application module中应用插件

apply plugin: 'com.android.application'
apply plugin: 'com.didi.drouter'

1.3 添加Java代码依赖

dependencies {
    api "io.github.didi:drouter-api:2.4.5"
}

1.4 无需添加混淆规则

2. 初始化,加载路由表

DRouter.init(application);

三、问题自查方法

1. 首先确认下这些类是不是在apk里

可以把debug的apk拖到AndroidStudio里看看有没有目标类
遇到找不到目标的问题可能只是因为没有把module引入进来,比如
api project(':xxx')

2. 打开编译期日志

apply plugin: 'com.didi.drouter'
drouter {
    debug = true
}
编译时会有DRouter相关的日志打印
可以看到路由表,可以看到哪些类用到了DRouter,检查是否有异常

3. 运行期日志

Logcat中抓取 DRouterCore 关键字