DRouter
Introduction: Android Router Framework
Tags:
DRouter 是 18 年滴滴乘客端自研的一套 Android 路由框架,基于平台化解耦的思想,为组件间通信服务。该项目以功能全面、易用为原则,支持各种路由场景,在页面路由、服务获取和过滤、跨进程及应用、VirtualApk 插件支持等方面都能提供多样化的服务。目前已在滴滴乘客端、顺风车、单车、国际化、滴滴定制车等十多个滴滴的 app 内使用,得到各种场景的验证。
提供功能
- 使用 URI 字符串导航 Activity、Fragment、View、RouterHandler,注解支持正则表达式、占位符
- 适配 ActivityResultLauncher
- RouterHandler、Activity 支持等待异步完成(hold),并可设置超时时间
- RouterHandler 指定执行线程
- 注入拦截器,支持全局拦截器和局部拦截器,面向切面编程,拦截器可以使用字符串名字
- 更为多样化的 Fragment 页面跳转能力
- 使用接口或基类导航到实现类 Service 的 Class 以及实例
- 支持 Service 别名以及多维过滤器查找
- 导航 Service 可指定任意构造器、支持单例
- 支持动态注册 RouterHandler、Service,绑定生命周期自动解绑
- 简单易用的跨进程执行 RouterHandler、Service
- 跨进程访问无需提前绑定、如同本地调用一样进行访问
- 支持客户端进程和服务端进程自动重连
- 共享内存
- 支持 VirtualApk
- 适配 AndroidX
技术特点
- 支持增量编译,多线程扫描,提升编译效率
- 初始化点对点加载路由表,无反射和遍历,异步加载,提升启动性能
- 完整的 Router 功能
- 强大的 ServiceLoader 实例化和过滤能力
- 易用高效的跨进程通信机制,同步执行,就像调用本地方法
- 框架内部尽可能规避反射,提升运行时性能
- 动态下载与 api 匹配的 plugin,无需升级 plugin 版本
- 无需手动添加混淆规则
核心模块
模块 | 功能 | :-- | :-- | Router | Native 和 H5 导航 Activity、Fragment、View、RouterHandler,支持切入拦截器 Service | 基于 spi 通过接口的形式查找到实现类,支持过滤和优先级配置 Page | 支持单 Page、栈 Page、ViewPager 三种形式的 Fragment 加载 Process | 跨进程访问 Router、Service,共享内存
使用文档
接入方式及文档请移步 Wiki
/** 插件 **/
classpath "io.github.didi:drouter-plugin:1.3.5" // agp 1.x - 7.x
classpath "io.github.didi:drouter-plugin:1.4.0" // agp 8.x 以上
/** 依赖库 **/
api "io.github.didi:drouter-api:2.4.6" // Router、Service
api "io.github.didi:drouter-api-page:1.0.0" // Page
api "io.github.didi:drouter-api-process:1.0.0" // Process
微信交流群
或微信搜索作者 gwball (备注 DRouter)入群
相关文章
滴滴开源 DRouter:一款高效的 Android 路由框架
License
DRouter 基于 Apache-2.0 协议进行分发和使用,更多信息参见 协议文件