navigation3

  
‫Navigation 3 היא ספריית ניווט חדשה שנועדה לפעול עם Compose.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫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 (ווריאציות) תומכים עכשיו בעומס יתר חדש שמקבל NavigationEventStates שהועברו. העומסים הפשוטים (שמקבלים 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's swipeEdge בתור @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)

שינויים בתלות

גרסה 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

שינויים ב-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. המשמעות היא שאם יש כמה מחסניות של היסטוריית ניווט, צריך להחליף את ה-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.