navigation3
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
8 באוקטובר 2025 | - | - | - | 1.0.0-alpha11 |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-navigation3, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.
מוסיפים את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle
של האפליקציה או המודול:
Groovy
dependencies { implementation "androidx.navigation3:navigation3-runtime:1.0.0-alpha11" implementation "androidx.navigation3:navigation3-ui:1.0.0-alpha11" }
Kotlin
dependencies { implementation("androidx.navigation3:navigation3-runtime:1.0.0-alpha11") implementation("androidx.navigation3:navigation3-ui:1.0.0-alpha11") }
מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ב-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לשמוע מכם אם תגלו בעיות חדשות או אם יש לכם רעיונות לשיפור הספרייה הזו. לפני שיוצרים ספרייה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להוסיף את ההצבעה שלכם לבעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא כלי המעקב אחר בעיות.
אין הערות לגבי הגרסה של הארטיפקט הזה.
גירסה 1.0
גרסה 1.0.0-alpha11
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
lambda שמועברת אלNavDisplay
ואלSceneStrategy
לא מספקת יותר פרמטרcount: Int
כדי לציין מתי צריך להסיר כמה רשומות. במקום זאת, פונקציית ה-() -> Unit
lambda תופעל עכשיו כמה פעמים ברצף במקרה הנדיר שבו בקשות ה-Scene שלכם יציגו כמה רשומות. (Idedb5, b/446989346) - תסיר את המחלקה
NavEntryWrapper
ותחליף את הפונקציונליות שלה במחלקה סופיתNavEntry
עם בנאי משני חדש שמקבלNavEntry
עם תוכן חדש. כך נוכל להמשיך לתמוך בהוספת תוכן חדש לערך. (I7da2a, b/444447130) - הפונקציה
navEntryDecorator
שיוצרת ומחזירהNavEntryDecorator
הוסרה והוחלפה במחלקהNavEntryDecorator
, שהפכה עכשיו לציבורית ופתוחה ליצירת מחלקות משנה. (If81f8, b/444447434, b/447381176) - השם של
SavedStateNavEntryDecorator
שונה ל-SaveableStateHolderNavEntryDecorator
כי הוא מוסיףSaveableStateHolder
לרשומות. בנוסף, בוצע רפקטורינג של ה-decorator מפונקציה למחלקה, כי מבחינה פונקציונלית הוא מפעל שלNavEntryDecorator
. (Ie6013, b/447381176) - כבר לא נדרש להשתמש ב-
LocalEntriesToRenderInCurrentScene
composition local כדי להציג תצוגות מותאמות אישית באמצעותSceneState
כחלופה לשימוש ב-NavDisplay
. התצוגה הזו היא עכשיו פנימית. (Ic40ef, b/414668196) - הסרנו את
SceneSetupNavEntryDecorator
ואתrememberSceneSetupNavEntryDecorator()
מ-API Surface הציבורי. הפונקציונליות הזו כלולה עכשיו כברירת מחדל, ולא צריך להוסיף אותה באופן ידני. (Ieae42, b/444479133) -
NavEntry
,DialogScene
,SinglePaneScene
וגםSceneState
מיישמים עכשיו את הפונקציה equals. (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-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 מספק עכשיו מאפייני ברירת מחדל חדשים של
transitionSpec
. (Ibcabd) - הוספנו אובייקט
SceneState
חדש שיעזור לכם לנהל סצנות. הוא מספק גם עומס יתר חדש שלNavDisplay
שמקבל אתSceneState
ואתNavigationEventState
. (Idfb46, b/444479133) NavDisplay
מאפשרת עכשיו להתאים אישית את המעברים על סמך המיקוםScene
שאליו עוברים וממנו, על ידי עיון בTransition
שלcurrentState
וtargetState
. (I906cc, b/443872322)- התפקיד של
NavigationEventInfo
הוא עכשיוabstract class
במקוםinterface
. מעדכנים את כל ההטמעות בהתאמה אישית כך שיורשות מהמחלקה (לדוגמה,data class MyInfo : NavigationEventInfo()
). (I1e59c, b/444734264) - ממשקי ה-API של
navigationevent-compose
handler עודכנו. NavigationEventHandler
ו-NavigationBackHandler
(ווריאציות) תומכים עכשיו בעומס יתר חדש שמקבלNavigationEventState
s שהועברו. העומסים הפשוטים (שמקבליםcurrentInfo
) נשמרים ועכשיו משתמשים במודל המצב החדש הזה באופן פנימי. (Ic3251, b/444734264) - כל ממשקי ה-API של Scene הועברו מ-navigation3-ui אל navigation3-runtime. כלומר, הם זמינים עכשיו בכל הפלטפורמות שנתמכות על ידי navigation3-runtime. (I431d0, b/444449993)
- נוספה
rememberDecoratedNavEntries
חדשה של overload שמקבלת רשימה שלNavEntry
לעיצוב. אפשר להוסיף לערכי הקלט קישוטי ערכים אחרים. (I5a034, b/444230270) - הסרת פרמטרים של סוג wildcard של navigation3 (I02540)
- שיפרנו את הטיפול בגנריות ב-
entryProvider
DSL. אם בעבר ייבאתם אתandroidx.navigation3.runtime.entry
, אין יותר צורך בכך. (I299fc) - הגבלת העומס העודף של
NavBackStackSerializer
שמבוסס על השתקפות ל-Android. ההגדרה הזו מונעת כשלים מרומזים בסדרות בזמן ריצה בפלטפורמות שאינן Android, על ידי אכיפת השימוש בעומס היתר המפורשSavedStateConfiguration
בקוד מרובה פלטפורמות. (I73313, b/420443609) - תכין את
NavigationEvent
'sswipeEdge
בתור@IntDef
(Icee54, b/443950342) - הגבלת סריאליזציה של
NavBackStack
ל-Android. כך נמנעות שגיאות בזמן הריצה בפלטפורמות שאינן Android. כדי לשמור את המצב בכמה פלטפורמות, משתמשים ב-rememberNavBackStack
overload עם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
שיוצרת ומחזירה NavEntry עם רשימה של מעצבים שסופקו (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 ומחשב), Native (Linux, iOS, watchOS, macOS, MinGW) ו-Web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). הערה: הפקודה הזו לא מספקת יעדי KMP עבורNavigation3 UI
artifact. בפלטפורמות אחרות, תצטרכו להטמיע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
- הערך שמוגדר כברירת מחדל ל-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-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
. המשמעות היא שאם יש כמה מחסניות של היסטוריית ניווט, צריך להחליף את ה-Decorators לאורך מחסניות היסטוריית הניווט כדי לשמור על המצב של 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
שנוצר מה-lambda החדש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 פיתוח נייטיב. ארטיפקט androidx.navigation3.runtime
מספק את אבני הבניין, וארטיפקט androidx.navigation3.ui
מספק את שכבת ממשק המשתמש באמצעות NavDisplay
API. המפתחים יכולים לספק את המצב שלהם ישירות לפונקציה הניתנת להרכבה 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.