-
Notifications
You must be signed in to change notification settings - Fork 93
Home
gaowei edited this page May 14, 2023
·
33 revisions
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 根目录下的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 无需添加混淆规则
DRouter.init(application);
可以把debug的apk拖到AndroidStudio里看看有没有目标类
遇到找不到目标的问题可能只是因为没有把module引入进来,比如
api project(':xxx')
apply plugin: 'com.didi.drouter'
drouter {
debug = true
}
编译时会有DRouter相关的日志打印
可以看到路由表,可以看到哪些类用到了DRouter,检查是否有异常
Logcat中抓取 DRouterCore 关键字