DRouterAndroid 路由框架

联合创作 · 2023-09-24 21:03

DRouter 是滴滴乘客端自研的一套 Android 路由框架,基于平台化解耦的思想,为组件间通信服务。


该项目以功能全面、易用为原则,支持各种路由场景,在页面路由、服务获取和过滤、跨进程及应用、VirtualApk插件支持等方面都能提供多样化的服务。目前已在滴滴乘客端、顺风车、单车、国际化、滴滴定制车等十多个滴滴的app内使用,得到各种场景的验证。


DRouter架构图


提供功能



  • 使用URI字符串导航Activity、Fragment、View、RouterHandler,注解支持正则表达式、占位符

  • 适配ActivityResultLauncher

  • RouterHandler、Activity支持等待异步完成(hold),并可设置超时时间

  • RouterHandler指定执行线程

  • 注入拦截器,支持全局拦截器和局部拦截器,面向切面编程,拦截器可以使用字符串名字

  • 更为多样化的Fragment页面跳转能力

  • 使用接口或基类导航到实现类Service的Class以及实例

  • 支持Service别名以及多维过滤器查找

  • 导航Service可指定任意构造器、支持单例

  • 支持动态注册RouterHandler、Service,绑定生命周期自动解绑

  • 简单易用的跨进程执行RouterHandler、Service

  • 跨进程访问无需提前绑定、如同本地调用一样进行访问

  • 支持客户端进程和服务端进程自动重连

  • 共享内存

  • 支持VirtualApk

  • 适配AndroidX


技术特点



  1. 支持增量编译,多线程扫描,提升编译效率

  2. 初始化点对点加载路由表,无反射和遍历,异步加载,提升启动性能

  3. 完整的Router功能

  4. 强大的ServiceLoader实例化和过滤能力

  5. 易用高效的跨进程通信机制,同步执行,就像调用本地方法

  6. 框架内部尽可能规避反射,提升运行时性能

  7. 动态下载与api匹配的plugin,无需升级plugin版本

  8. 无需手动添加混淆规则


核心模块



























模块 功能
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.3" // 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.5" // Router、Service
api "io.github.didi:drouter-api-page:1.0.0" // Page
api "io.github.didi:drouter-api-process:1.0.0" // Process

浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报