навигация3
| Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-версия | Альфа-релиз |
|---|---|---|---|---|
| 22 октября 2025 г. | - | - | 1.0.0-бета01 | - |
Объявление зависимостей
Чтобы добавить зависимость от navigation3, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
Круто
dependencies { implementation "androidx.navigation3:navigation3-runtime:1.0.0-beta01" implementation "androidx.navigation3:navigation3-ui:1.0.0-beta01" }
Котлин
dependencies { implementation("androidx.navigation3:navigation3-runtime:1.0.0-beta01") implementation("androidx.navigation3:navigation3-ui:1.0.0-beta01") }
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.
Более подробную информацию см. в документации по системе отслеживания проблем .
Заметок о выпуске для этого артефакта нет.
Версия 1.0
Версия 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-альфа11
8 октября 2025 г.
Выпущена androidx.navigation3:navigation3-*:1.0.0-alpha11 . Версия 1.0.0-alpha11 содержит следующие коммиты .
Изменения API
- Метод
calculateSceneвSceneStrategyбольше не является@Composable. Вместо этого рассмотрите возможность перенести эту работу в конструкцию вашего методаSceneStrategy(т. е. в методrememberMySceneStrategy()), который позволит вам полностью определить время существования любых значенийrememberSaveableили ключевых операторов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теперь реализуют равенство. ( I96121 ) - Интерфейс сцены дополнен новым полем метаданных для добавления метаданных, специфичных для сцены, к NavDisplay. Это позволяет сцене переопределять метаданные
NavDisplay, например, с помощью переходов. ( I1fd96 , b/443955625 ) - Упростите сигнатуру
rememberNavBackStack, удалив избыточный параметр универсального типа. Функция теперь принимает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-альфа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и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 )
- Улучшена обработка дженериков для
entryProviderDSL. Если ранее вы импортировали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 )
Изменения зависимости
- Navigation3 теперь зависит от NavigationEvent Alpha08 .
Версия 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
- minSdk по умолчанию для 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-альфа06
30 июля 2025 г.
Выпущена androidx.navigation3:navigation3-*:1.0.0-alpha06 . Версия 1.0.0-alpha06 содержит следующие коммиты .
Обновление зависимостей
- Navigation3 теперь зависит от Navigation Event
1.0.0-alpha05.
Версия 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 .