Navigation Component в многомодульном проекте или как станцевать на граблях и остаться невредимым

Anton Uryvskii
1 min readJan 4, 2021

Jetpack Navigation Component — относительно новый инструмент построения навигации внутри Android-приложения. Google выпустил эту библиотеку в марте 2019 года, чтобы показать новый подход в реализации навигации, отличный от самописных способов, Cicerone, Conductor и пр.

Почему Navigation Component:

  • Продукт от Google, значит, можно рассчитывать на долгую поддержку и доработку.
  • Простой в освоении и использовании.
  • Плагин Safe Args, который делает работу с библиотекой еще проще.
  • Редактор, вшитый в Android Studio и имеющий визуальное представление.
  • Все основные элементы навигации указываются в xml — это позволяет разделить навигацию и остальной код друг от друга.

Но есть и нюансы. Как только дело доходит до навигации в многомодульном проекте с десятью и более экранами, то выясняется, что всё не так просто. В работе с библиотекой при такой архитектуре нет единого подхода или рекомендаций, поэтому я сделал свою декомпозицию, организацию и свод правил для работы с NavComponent ̶с̶ ̶п̶р̶е̶ф̶е̶р̶а̶н̶с̶о̶м̶ ̶и̶ ̶д̶а̶м̶а̶м̶и̶. Помимо этого палки в колеса вставляет плагин Safe-Args, а точнее его генерация файлов, которая никак не ложилась на предложенный флоу работы. Спойлер: в итоге этот подход используется уже в 4-м проекте подряд без каких либо нареканий.

Но давайте все по порядку. Этот цикл историй нацелен на разбор библиотеки от начала до конца. Поэтому начнем с азов.

  1. Посмотрим, что за зверь этот Navigation Component.
  2. Узнаем, как работает плагин Safe Args и что он делает.
  3. Дальше самое интересное — я расскажу о своём подходе работы с Navigation Component в многомодульном проекте совместно с SafeArgs.

И приятный бонус — решение для создания iOS-like multistack-навигации.

--

--