darkstarslyp / DRouter

Android Router Framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

简介


DRouter是滴滴乘客端自研的一套Android路由框架,基于平台化解耦的**,为组件间通信服务。该项目以功能全面、易用为原则,支持各种路由场景,在页面路由、服务获取和过滤、跨进程及应用、VirtualApk插件支持等方面都能提供多样化的服务。目前已在滴滴乘客端、顺风车、单车、国际化、滴滴定制车等十多个滴滴的app内使用,得到各种场景的验证。

DRouter架构图

提供功能

  • 使用URI字符串导航Activity、Fragment、View、RouterHandler,注解支持正则表达式、占位符
  • 回调式onActivityResult
  • RouterHandler、Activity支持等待异步完成(hold),并可设置超时时间
  • RouterHandler指定执行线程
  • 注入拦截器,支持全局拦截器和局部拦截器,面向切面编程
  • 更为多样化的Fragment页面跳转能力
  • 使用接口或基类导航到实现类Service的Class以及实例
  • 支持Service别名以及多维过滤器查找
  • 导航Service可指定任意构造器、支持单例
  • 支持动态注册RouterHandler、Service,绑定生命周期自动解绑
  • 简单易用的跨进程执行RouterHandler、Service
  • 跨进程访问无需提前绑定、如同本地调用一样进行访问
  • 支持客户端进程和服务端进程自动重连
  • 支持VirtualApk

技术特点

  1. 插件支持增量编译、多线程扫描、以及运行时异步加载路由表,尽其所能提高效率
  2. 完整的Router功能
  3. 强大的ServiceLoader能力
  4. 简单高效的跨进程通信机制,就像调用本地方法
  5. 框架内部尽可能减少使用反射,提升性能
  6. 动态下载与api匹配的plugin,无需升级plugin版本
  7. 无需手动添加混淆规则

核心模块

模块 功能
Router Native和H5导航Activity、Fragment、View、RouterHandler,支持切入拦截器
Service 基于spi通过接口的形式查找到实现类,支持过滤和优先级配置
Remote 跨进程访问Router、Service
Page 支持单Page、栈Page、ViewPager三种形式的Fragment加载

使用文档

接入方式及文档请移步 Wiki

/** 最新版本 **/
classpath "com.didi.drouter:drouter-plugin-proxy:1.0.0"
api "com.didi.drouter:drouter-api:1.0.4"

微信交流群

微信群二维码有期限,请搜索 gwball 加我微信入群,可备注 DRouter

License

Apache-2.0 license

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

About

Android Router Framework

License:Apache License 2.0


Languages

Language:Java 92.0%Language:Groovy 8.0%