навигация3

Navigation 3 — это новая библиотека навигации, разработанная для работы с Compose.
Последнее обновление Стабильный релиз Предварительная версия для выпуска Бета-версия Альфа-версия
14 января 2026 г. 1.0.0 - - 1.1.0-alpha02

Объявление зависимостей

Чтобы добавить зависимость от navigation3, необходимо добавить репозиторий Google Maven в ваш проект. Для получения дополнительной информации ознакомьтесь с информацией в репозитории Google Maven .

Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:

Круто

dependencies {
    implementation "androidx.navigation3:navigation3-runtime:1.1.0-alpha02"
    implementation "androidx.navigation3:navigation3-ui:1.1.0-alpha02"
}

Котлин

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.1.0-alpha02")
    implementation("androidx.navigation3:navigation3-ui:1.1.0-alpha02")
}

Для получения дополнительной информации о зависимостях см. раздел «Добавление зависимостей сборки» .

Обратная связь

Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.

Создать новую задачу

Для получения более подробной информации см. документацию по системе отслеживания ошибок .

Для этого артефакта отсутствуют примечания к выпуску.

Версия 1.1

Версия 1.1.0-alpha02

14 января 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.0-alpha02 . Версия 1.1.0-alpha02 содержит следующие коммиты .

Новые функции

  • SceneStrategy теперь поддерживается вложенность сцен с помощью новой функции calculatedScene(Scene) . Это означает, что SceneStrategy можно настраивать для предоставления дополнительной функциональности другим сценам. ( I5df7c , b/440333896 )

Версия 1.1.0-alpha01

3 декабря 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.0-alpha01 . Версия 1.1.0-alpha01 содержит следующие коммиты .

Изменения в API

  • Navigation3 теперь поддерживается обработка сцен как объектов с общими свойствами. Это означает, что при смене сцен можно обеспечить плавный переход. Включить эту функцию можно, передав SharedTransitionScope либо в NavDisplay , либо в rememberSceneState . ( I15868 )

Версия 1.0

Версия 1.0.0

19 ноября 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0 . Версия 1.0.0 содержит следующие коммиты .

Представляем Navigation3!

  • Библиотека Navigation3 теперь стабильна! Navigation3 — это подход к навигации, основанный на AndroidX Compose.
  • Для получения более подробной информации ознакомьтесь с нашим сообщением в блоге , посетите раздел ресурсов и попробуйте рецепты .

Версия 1.0.0-rc01

5 ноября 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-rc01 . Версия 1.0.0-rc01 содержит следующие коммиты .

Исправлены ошибки

  • Теперь NavDisplay устанавливает LocalLifecycleOwner на уровне Scene , что позволяет авторам сцен определять, завершились ли все переходы, проверяя, что Lifecycle.State имеет RESUMED . Поведение LocalLifecycleOwner на уровне NavEntry остается неизменным: он по-прежнему ограничен значением STARTED , если переход находится в процессе, и дополнительно ограничен значением CREATED если этот NavEntry был удален из стека возврата и находится в процессе анимации. ( I03113 , b/454045829 )

Версия 1.0.0-beta01

22 октября 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-beta01 . Версия 1.0.0-beta01 содержит следующие коммиты .

Изменения в API

  • Теперь у SceneStrategyScope есть только публичный конструктор без аргументов, подходящий для тестирования вашей SceneStrategy и возвращаемой Scene по отдельности. Для более сложных случаев использования, пожалуйста, используйте rememberSceneState() . ( I8440c , b/451679047 )

Исправлены ошибки

  • Исправлена ​​ошибка бесконечного цикла при последовательном использовании SceneStrategy с then . ( Iba3f0 , b/450323470 )
  • Исправлено мерцание экрана при перестановке backStack , передаваемого в NavDisplay , и использовании анимаций. ( Ief7b5 , b/450967248 )

Версия 1.0.0-alpha11

8 октября 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha11 . Версия 1.0.0-alpha11 содержит следующие коммиты .

Изменения в API

  • Метод calculateScene в SceneStrategy больше не имеет @Composable . Вместо этого, рассмотрите возможность переноса этой работы в конструктор вашего метода SceneStrategy (т.е. в метод rememberMySceneStrategy() ), который позволяет полностью определить время жизни любых значений rememberSaveable или операторов key remember на основе правильных значений. ( If1733 , b/448709506 )
  • Параметр onBack для SceneStrategy.calculateScene перемещен в новую область видимости получателя SceneStrategyScope , чтобы сделать более понятным, что это необязательный параметр, и предоставить точку расширения для будущих функций Navigation3. ( I3aea3 , b/448460407 )
  • Функция onBack передаваемая в NavDisplay и SceneStrategy больше не предоставляет параметр count: Int указывающий, когда следует удалять несколько элементов. Вместо этого функция () -> Unit теперь будет вызываться несколько раз подряд в редких случаях, когда ваша сцена запрашивает удаление нескольких элементов. ( Idedb5 , b/446989346 )
  • Удалите класс NavEntryWrapper и замените его функциональность финальным классом NavEntry с новым вторичным конструктором, который принимает объект NavEntry с новым содержимым. Это позволит продолжить поддержку обертывания записи новым содержимым. ( I7da2a , b/444447130 )
  • Функция navEntryDecorator , которая создает и возвращает объект NavEntryDecorator , была удалена и заменена классом NavEntryDecorator , который теперь является публичным и открытым для наследования. ( If81f8 , b/444447434 , b/447381176 )
  • SavedStateNavEntryDecorator был переименован в SaveableStateHolderNavEntryDecorator поскольку он декорирует элементы с помощью SaveableStateHolder . Кроме того, декоратор был преобразован из функции в класс, поскольку по своей сути он является фабрикой для NavEntryDecorator . ( Ie6013 , b/447381176 )
  • Для пользовательских дисплеев, использующих SceneState в качестве альтернативы NavDisplay больше не требуется использовать локальную переменную композиции LocalEntriesToRenderInCurrentScene , которая теперь является внутренней. ( Ic40ef , b/414668196 )
  • Удалены SceneSetupNavEntryDecorator и rememberSceneSetupNavEntryDecorator() из публичного API. Теперь эта функциональность включена по умолчанию без необходимости ее ручного добавления. ( Ieae42 , b/444479133 )
  • Теперь NavEntry , DialogScene , SinglePaneScene и SceneState реализуют интерфейс equals. ( I96121 )
  • В интерфейсе сцены появилось новое поле метаданных для добавления метаданных, специфичных для сцены, к NavDisplay. Это позволяет сцене переопределять метаданные в NavDisplay , например, для переходов. ( I1fd96 , b/443955625 )
  • Упростите сигнатуру rememberNavBackStack , удалив избыточный параметр типа generic. Теперь функция принимает vararg elements: NavKey . ( I03e45 )
  • Анимации по умолчанию для NavDisplay теперь являются частью общего API, что позволяет вызывать их со всех платформ. ( I71af9 , b/447147159 )
  • Переименуйте EntryProviderBuilder в EntryProviderScope , чтобы точно отразить, что класс представляет собой Kotlin DSL, предоставляющий область видимости для создания NavEntries . ( Ia7465 )

Исправлены ошибки

  • Функция rememberNavBackStack() теперь обеспечивает полиморфную сериализацию для NavKey и требует наличия пользовательской SavedStateConfiguration , настроенной для корректного восстановления состояния. Документация KDoc была обновлена, чтобы отразить требование о том, что все подтипы NavKey должны быть зарегистрированы в предоставленном модуле SerializersModule. ( I6de37 , I782f2 , b/446664383 )

Версия 1.0.0-alpha10

24 сентября 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha10 . Версия 1.0.0-alpha10 содержит следующие коммиты .

Изменения в API

  • Добавлена ​​новая перегрузка NavDisplay , которая принимает список NavEntry<T> , помеченных атрибутом rememberDecoratedNavEntries . ( I4025b , b/441940314 )
  • Перенесено DialogScene в новый пакет. ( Ia5840 )
  • Удалите публичный API DecorateNavEntry . Вместо этого используйте rememberDecoratedNavEntries , чтобы обернуть NavEntry списком декораторов. ( Id8c09 )
  • В Navigation3 UI теперь доступны новые свойства transitionSpec по умолчанию. ( Ibcabd )
  • Добавлен новый объект SceneState для управления сценами. Он также предоставляет новую перегрузку NavDisplay , которая принимает SceneState и NavigationEventState . ( Idfb46 , b/444479133 )
  • Теперь NavDisplay позволяет настраивать переходы в зависимости от того, в какую Scene вы переходите и из какой, анализируя currentState и targetState Transition . ( I906cc , b/443872322 )
  • NavigationEventInfo теперь является abstract class а не interface . Обновите все пользовательские реализации, чтобы они наследовали от этого класса (например, data class MyInfo : NavigationEventInfo() ). ( I1e59c , b/444734264 )
  • API обработчиков navigationevent-compose обновлены. NavigationEventHandler и NavigationBackHandler (и их варианты) теперь поддерживают новую перегрузку, которая принимает поднятое состояние NavigationEventState . Простые перегрузки (принимающие currentInfo ) сохранены и теперь используют эту новую модель состояния внутри. ( Ic3251 , b/444734264 )
  • Все API-интерфейсы сцен были перенесены из navigation3-ui в navigation3-runtime. Это означает, что теперь они доступны на всех платформах, поддерживаемых navigation3-runtime. ( I431d0 , b/444449993 )
  • Добавлена ​​новая перегрузка rememberDecoratedNavEntries , которая принимает список NavEntry для декорирования. Элементы ввода уже могут быть декорированы другими декораторами элементов. ( I5a034 , b/444230270 )
  • Удалить параметры типа подстановки navigation3 ( I02540 )
  • Улучшена обработка обобщенных типов для DSL entryProvider . Если ранее вы импортировали androidx.navigation3.runtime.entry , теперь это не требуется. ( I299fc )
  • Ограничьте использование перегрузки NavBackStackSerializer основанной на рефлексии, только платформами Android. Это предотвратит неявные ошибки сериализации во время выполнения на платформах, отличных от Android, путем принудительного использования явной перегрузки SavedStateConfiguration в многоплатформенном коде. ( I73313 , b/420443609 )
  • Сделайте свойство ` swipeEdge объекта ` NavigationEvent @IntDef ( `Icee54` , b/443950342` )
  • Ограничьте сериализацию NavBackStack только Android. Это предотвратит сбои во время выполнения на платформах, отличных от Android. Для сохранения состояния на нескольких платформах используйте перегрузку rememberNavBackStack с явным указанием SavedStateConfiguration . ( I1e418 , b/420443609 )

Исправлены ошибки

  • Исправлена ​​ошибка, приводящая к сбою во время предиктивной возврата, когда вложенный NavDisplay имеет только одну дочернюю запись. ( I2cdc0 , b/441933162 )

Версия 1.0.0-alpha09

10 сентября 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha09 . Версия 1.0.0-alpha09 содержит следующие коммиты .

Изменения в API

  • Объект DecoratedNavEntryProvider был заменен на rememberDecoratedNavEntries , который создает и возвращает NavEntries, декорированные списком предоставленных декораторов ( I0fe1c , b/441328236 ).
  • Теперь NavBackStack является универсальным типом по отношению к NavKey . Это позволяет приложениям и библиотекам определять собственные типы клавиш для своих стеков возврата, а не ограничиваться только NavKey . ( I4d190 , Iad2f4 , b/420443609 )
  • NavBackStack теперь имеет атрибут @kotlinx.serialization.Serializable , что позволяет сохранять и восстанавливать состояние навигации после завершения процесса и изменения конфигурации без лишнего шаблонного кода. ( I2c3cf , b/420443609 )
  • RememberNavBackStack была перенесена в commonMain , чтобы гарантировать её доступность на всех целевых платформах. ( Id69e7 , b/420443609 )

Исправлены ошибки

  • Теперь NavDisplay корректно перемещает каждый отдельный элемент NavEntry в нужное Lifecycle.State . ( I30aac , b/440145700 )
  • Исправлена ​​ошибка, из-за которой NavDisplay игнорировал любой вложенный NavigationEventDispatcherOwner , установленный через LocalNavigationEventDispatcherOwner из библиотеки NavigationEvent . ( I6224a )

Изменения зависимостей

Версия 1.0.0-alpha08

27 августа 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha08 . Версия 1.0.0-alpha08 содержит следующие коммиты .

Новые функции

  • Добавлены новые цели Kotlin MultiPlatform (KMP) для артефактов Navigation3 Runtime . Теперь Navigation3 Runtime поддерживает следующие платформы: JVM (Android и Desktop), нативные приложения (Linux, iOS, watchOS, macOS, MinGW) и веб-приложения (JavaScript, WasmJS). ( I55078 , b/424410398 , b/419294028 , b/419046226 ). Примечание: это не предоставляет цели KMP для артефакта Navigation3 UI . На других платформах вам потребуется реализовать собственный NavDisplay . Если вы хотите, чтобы это поддерживалось, пожалуйста, проголосуйте в этом вопросе на Jetbrains и следите за прогрессом в добавлении поддержки там.
  • Объект NavDisplayInfo теперь является публичным и может использоваться для получения списка видимых элементов из NavDisplay . ( Ibc91f )

Изменения в API

  • Добавлен новый NavBackStackSerializer , который можно использовать совместно с rememberNavBackStack для восстановления состояния. rememberNavBackStack() теперь также принимает SavedStateConfiguration , который можно использовать для предоставления собственной конфигурации. ( I2f4d2 , I4cd58 , b/420443609 )

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой при навигации некорректно срабатывали события жизненного цикла. ( I8bf6d , b/425901162 , b/434109022 )

Известные проблемы

  • В версии I8bf6d была обнаружена ошибка, из-за которой жизненные циклы основывались на сценах, а не на отдельных элементах, что нарушало работу жизненного цикла в тех случаях, когда key предоставленный NavEntry не является String или ваш NavEntry не переопределил contentKey и не присвоил ему значение key (обратите внимание, что это гарантирует возможность сохранения ключа в Bundle ). Эта ошибка исправлена ​​в следующем релизе. ( b/440145700 )

Версия 1.0.0-alpha07

13 августа 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha07 . Версия 1.0.0-alpha07 содержит следующие коммиты .

Обновление MinSdk

Изменения в API

  • Теперь SavedStateNavEntryDecorator использует SaveableStateRegistry , встроенный в SaveableStateProvider , для сохранения и восстановления состояний. ( If8d9a )
  • В параметр predictivePopTransitionSpec теперь передается край свайпа, что позволяет настраивать переход в зависимости от того, с какого края пользователь начал жест «Предиктивный возврат». ( I753a8 )

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой пользовательские сцены бесконечно пересчитывались, поскольку последняя сцена не запоминалась. ( I7ba84 , b/418153031 )

Обновление зависимостей

Версия 1.0.0-alpha06

30 июля 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha06 . Версия 1.0.0-alpha06 содержит следующие коммиты .

Обновление зависимостей

Версия 1.0.0-alpha05

2 июля 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha05 . Версия 1.0.0-alpha05 содержит следующие коммиты .

Изменения в поведении

  • Состояние NavEntry теперь строго зависит от текущего списка декораторов, переданных в NavDisplay . Это означает, что в случае наличия нескольких стеков возврата следует менять местами декораторы вдоль стеков возврата, чтобы сохранить состояние NavEntry в стеке возврата. В противном случае состояния будут очищены, как если бы элементы были удалены (вместо обмена). ( I7a759 , b/428033667 )

Версия 1.0.0-alpha04

18 июня 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha04 . Версия 1.0.0-alpha04 содержит следующие коммиты .

Изменения в API

  • NavEntry.content теперь является приватным. Для вызова содержимого NavEntry используйте новый API NavEntry.Content() , для вызова которого больше не требуется параметр key . ( Icd0fd , b/420991203 )
  • NavEntry.key теперь является приватным полем. Объект NavEntry и его соответствующие состояния должны идентифицироваться новым полем contentKey , которое генерируется из новой лямбда- contentKeyFactory и по умолчанию представляет собой сохраняемый хеш, сгенерированный из NavEntry.key ( I81a6c , b/422001357 , b/420991203 I2d7d4 , b/420991203 , b/422841812 ).

Изменения зависимостей

  • Теперь Navigation3 зависит от нового артефакта androidx.navigationevent.compose .

Версия 1.0.0-alpha03

4 июня 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha03 . Версия 1.0.0-alpha03 содержит следующие коммиты .

Исправлены ошибки

  • Navigation3 больше не будет очищать состояния декораторов для backStacks , которые были заменены другим экземпляром backStack . ( I28a42 , b/415076044 )

Версия 1.0.0-alpha02

23 мая 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha02 . Версия 1.0.0-alpha02 содержит следующие коммиты .

Исправлены ошибки

  • Исправлена ​​ошибка в SavedStateNavEntryDecorator , которая вызывала конфликты для разных классов данных с одинаковыми значениями свойств. ( b/418070648 , Iff4775 )
  • Исправлена ​​ошибка с отсутствующим классом, которая приводила к сбоям при запуске без явного указания зависимостей. ( b/419049149 , I4b4ed )

Версия 1.0.0-alpha01

20 мая 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha01 . Версия 1.0.0-alpha01 содержит следующие коммиты .

Новые функции

Navigation3 — это новая библиотека навигации, созданная специально для обработки внутриприложной навигации Jetpack Compose. Артефакт androidx.navigation3.runtime предоставляет базовые компоненты, а артефакт androidx.navigation3.ui — слой пользовательского интерфейса через API NavDisplay . Разработчики могут передавать собственное состояние непосредственно в составную функцию NavDisplay , которая изменяет содержимое в зависимости от изменений состояния разработчика.

@Serialiable object Home : NavKey
@Serialiable object Chat : NavKey

val backStack = rememberNavBackStack(Home)

NavDisplay(backStack, entryProvider = entryProvider {
  entry<Home> {
    Column {
      Text(Home)
      Button(onClick = { backStack.add(Chat) } ) {
        Text(Go to Chat)
      } 
    }
  }
  entry<Chat> { /* My Composable Content */ }
})

Для получения более подробной информации см. руководство по Navigation3 .