навигация3

Navigation 3 — это новая навигационная библиотека, разработанная для работы с Compose.
Последнее обновление Стабильный релиз Кандидат на релиз Бета-версия Альфа-релиз
24 сентября 2025 г. - - - 1.0.0-альфа10

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

Чтобы добавить зависимость от navigation3, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .

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

Круто

dependencies {
    implementation "androidx.navigation3:navigation3-runtime:1.0.0-alpha10"
    implementation "androidx.navigation3:navigation3-ui:1.0.0-alpha10"
}

Котлин

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.0.0-alpha10")
    implementation("androidx.navigation3:navigation3-ui:1.0.0-alpha10")
}

Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .

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

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

Создать новый выпуск

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

Заметок о выпуске для этого артефакта нет.

Версия 1.0

Версия 1.0.0-альфа10

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 теперь предоставляет новые свойства 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 )
  • Улучшена обработка дженериков для entryProvider DSL. Если ранее вы импортировали 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-альфа09

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-альфа08

27 августа 2025 г.

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

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

  • Добавлены новые цели Kotlin MultiPlatform (KMP) для артефактов Navigation3 Runtime . Navigation3 Runtime теперь поддерживает следующие платформы: JVM (Android и Desktop), Native (Linux, iOS, watchOS, macOS, MinGW) и Web (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-альфа07

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-альфа06

30 июля 2025 г.

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

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

Версия 1.0.0-альфа05

2 июля 2025 г.

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

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

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

Версия 1.0.0-альфа04

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-альфа03

4 июня 2025 г.

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

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

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

Версия 1.0.0-альфа02

23 мая 2025 г.

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

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

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

Версия 1.0.0-альфа01

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 .