DRouter

Project Url: didi/DRouter
Introduction: Android Router Framework
More: Author   ReportBugs   
Tags:

DRouter 是 18 年滴滴乘客端自研的一套 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.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

Apache-2.0 license

DRouter 基于 Apache-2.0 协议进行分发和使用,更多信息参见 协议文件

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools