1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/didiopensource-DRouter

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 7.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 12.03.2025 16:50 e0f1cf6

Введение


DRouter — это Android-фреймворк маршрутизации, разработанный командой Didi в 2018 году для мобильного приложения пассажиров. Он основан на концепции декомпозиции платформы для взаимодействия компонентов. Проект ориентирован на полноту функциональности и удобство использования, поддерживающий различные сценарии маршрутизации, такие как маршрутизация страниц, получение сервисов и фильтрация, межпроцессное взаимодействие и использование плагинов VirtualApk. На данный момент DRouter используется более чем в десятках приложений Didi, таких как приложение пассажиров, Didi Chuxing, Didi Bike, международные версии и Didi Custom Cars.

Архитектурная схема DRouter

Поддерживаемые возможности- Навигация URI-строками для Activity, Fragment, View, RouterHandler с поддержкой регулярных выражений и заполнителей

  • Совместимость с ActivityResultLauncher
  • Поддержка ожидания завершения асинхронной операции (hold) для RouterHandler и Activity с возможностью установки времени ожидания
  • Указание исполнительного потока для RouterHandler
  • Инъекция промежуточных модулей (interceptors), поддерживающая глобальные и локальные промежуточные модули, программирование через аспекты, где промежуточные модули могут быть указаны по имени строки
  • Расширенные возможности перехода между Fragment-ами
  • Навигация до реализации Service через интерфейсы или базовые классы
  • Поддержка псевдонимов Service и многомерных фильтров для поиска
  • Возможность указания любого конструктора для навигации Service и поддержка одиночного экземпляра
  • Динамическая регистрация RouterHandler и Service с автоматическим отключением при окончании жизненного цикла
  • Простое и эффективное межпроцессное выполнение RouterHandler и Service
  • Межпроцессное взаимодействие без необходимости предварительного связывания, как если бы это был вызов локального метода
  • Автоматическое восстановление соединения между клиентским и серверным процессами
  • Общий доступ к памяти
  • Поддержка VirtualApk
  • Совместимость с AndroidX### Технические особенности
  1. Поддержка инкрементальной сборки, многопоточной проверки, повышение производительности сборки
  2. Инициализация точки-к-точке для загрузки таблиц маршрутизации без использования рефлексии и перебора, асинхронная загрузка, повышение производительности старта
  3. Полная функциональность маршрутизатора
  4. Высокая производительность создания и фильтрации экземпляров Service
  5. Лёгкий и эффективный механизм межпроцессного взаимодействия, синхронное выполнение, как если бы это был вызов локального метода
  6. Минимизация использования рефлексии внутри фреймворка для повышения производительности выполнения
  7. Динамическая загрузка плагинов, совместимых с API, без необходимости обновления версий плагинов
  8. Отсутствие необходимости вручную добавлять правила шифрования

Основной модуль

Модуль Функционал
Router Нативные и H5 навигационные Activity, Fragment, View, RouterHandler, поддерживают врезание и перехват
Service На основе SPI через интерфейсы находят реализующие классы, поддерживают фильтрацию и конфигурацию приоритетов
Page Поддерживают одиночный Page, стек Page, три формы загрузки Fragment
Process Кросс-процессный доступ к Router, Service, общей памяти

Документация по использованию

Для подключения и получения документации перейдите на Wiki```java /** Плагин **/ 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


## Группа общения в WeChat

[Ссылка QR-кода группы WeChat](http://p-bim-img.bytedance.net/tos-cn-i-hf6qmptvc7/drouter/drouter.png~tplv-hf6qmptvc7-image.image)

или найдите автора gwball в WeChat (укажите DRouter для входа в группу)

## Статьи

[Открытый проект Didi DRouter: высокоэффективный Android-маршрутизатор](https://juejin.cn/post/6975818153381068831)

## Лицензия

<img alt="Лицензия Apache-2.0" src="https://www.apache.org/img/ASF20thAnniversary.jpg" width="128">

Проект DRouter распространяется и используется на условиях лицензии Apache-2.0, подробнее см. [лицензионное соглашение](LICENSE)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/didiopensource-DRouter.git
git@api.gitlife.ru:oschina-mirror/didiopensource-DRouter.git
oschina-mirror
didiopensource-DRouter
didiopensource-DRouter
master