навигация3
| Последнее обновление | Стабильный релиз | Предварительная версия для выпуска | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 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или операторов keyrememberна основе правильных значений. ( 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иtargetStateTransition. ( 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 )
Изменения зависимостей
- Теперь Navigation3 зависит от NavigationEvent Alpha08 .
Версия 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
- Минимальный SDK по умолчанию для AndroidX был перенесен с API 21 на API 23 ( Ibdfca , b/380448311 , b/435705964 , b/435705223 ).
Изменения в API
- Теперь
SavedStateNavEntryDecoratorиспользуетSaveableStateRegistry, встроенный вSaveableStateProvider, для сохранения и восстановления состояний. ( If8d9a ) - В параметр
predictivePopTransitionSpecтеперь передается край свайпа, что позволяет настраивать переход в зависимости от того, с какого края пользователь начал жест «Предиктивный возврат». ( I753a8 )
Исправлены ошибки
- Исправлена ошибка, из-за которой пользовательские сцены бесконечно пересчитывались, поскольку последняя сцена не запоминалась. ( I7ba84 , b/418153031 )
Обновление зависимостей
- Теперь Navigation3 зависит от Navigation Event
1.0.0-alpha06.
Версия 1.0.0-alpha06
30 июля 2025 г.
Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha06 . Версия 1.0.0-alpha06 содержит следующие коммиты .
Обновление зависимостей
- Теперь Navigation3 зависит от Navigation Event
1.0.0-alpha05.
Версия 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используйте новый APINavEntry.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 .