navigation3

  
‫Navigation 3 هي مكتبة تنقّل جديدة مصمَّمة للعمل مع Compose.
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
‫23 سبتمبر 2026 1.2.0 - - 1.3.0-alpha01

تحديد الاعتماديات

لإضافة اعتمادية على navigation3، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:

Groovy

dependencies {
    implementation "androidx.navigation3:navigation3-runtime:1.3.0-alpha01"
    implementation "androidx.navigation3:navigation3-ui:1.3.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.3.0-alpha01")
    implementation("androidx.navigation3:navigation3-ui:1.3.0-alpha01")
}

لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.

الملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء مشكلة جديدة

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

الإصدار 1.3

الإصدار 1.3.0-alpha01

‫23 سبتمبر 2026

تم طرح androidx.navigation3:navigation3-*:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.

** إصلاحات الأخطاء **

  • تم إصلاح مشكلة تسليم الصورة المتحركة لإيماءة إظهار شاشة الرجوع في NavDisplay من خلال نقلها إلى DeferredAnimatedContent وحلّ مشاكل تسليم عملية الانتقال. I145eaedd b/430807423

لا تتوفّر ملاحظات إصدار لهذا العنصر.

الإصدار 1.2.0

‫23 سبتمبر 2026

تم طرح androidx.navigation3:navigation3-*:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.

الإصدار 1.2.0 أصبح الآن مستقرًا

التغييرات المهمة منذ الإصدار 1.1.0

Result API

  • تتيح واجهة برمجة التطبيقات الجديدة هذه تمرير النتائج بين NavEntries باستخدام ResultEventBus المقدَّم من LocalResultEventBus وResultEventBusNavEntryDecorator.
  • تمت إضافة rememberResultEventBus للسماح بنقل ResultEventBus خارج ResultEventBusNavEntryDecorator وتمريره إلى rememberResultEventBusNavEntryDecorator.
  • يمكن الوصول إلى النتائج التي تم تمريرها كحالة باستخدام ResultEventBus#conflateAsState أو جمعها كتدفق للنتائج باستخدام ResultEffect.

Deep Link API

تتيح Navigation3 الآن استخدام الروابط لصفحات معيّنة في Kotlin Multiplatform (KMP) في androidx.navigation3.runtime.deeplink من خلال DeepLinkRequest وDeepLinkUri وDeepLinkMatcher.

  • ‫DeepLinkRequest وRequestExtras: يمثّلان طلب رابط لصفحة معيّنة تم إنشاؤه من DeepLinkUri أو سلسلة معرّف الموارد المنتظم (URI) أو Intent في Android. يمكن إرفاق بيانات وصفية إضافية للطلبات باستخدام الحاوية RequestExtras الآمنة من حيث النوع والمضمّنة في requestExtras DSL وRequestExtrasKey<T>.
  • ‫DeepLinkMatcher: يمثّل رابطًا لصفحة في التطبيق يمكن مطابقته مع DeepLinkRequest. يرتبط كل مثيل أداة مطابقة بمفتاح التنقّل الذي يتيح هذا الرابط لصفحة معيّنة. يمكن ربط مفتاح تنقّل بعناصر مطابقة متعددة. سيؤدي طلب DeepLinkMatcher.match إلى عرض MatchResult يحتوي على مفتاح التنقّل المرتبط في حال نجاح المطابقة. هناك طريقتان تلقائيتان لتنفيذ DeepLinkMatcher: UriDeepLinkMatcher لمطابقة الروابط لصفحات معيّنة استنادًا إلى Uri، وStaticKeyDeepLinkMatcher لمطابقة الروابط لصفحات معيّنة باستخدام DeepLinkMatcher.Filter فقط التي تتم مطابقتها بقيمة منطقية.
  • ‫BackStackMatcher: DeepLinkMatcher لإنشاء سجلّ الأنشطة السابقة الاصطناعي عند العثور على تطابق ناجح للرابط العميق. يمكن إنشاء BackStackMatcher من خلال دالة الإضافة DeepLinkMatcher.withBackStack.

التعامل مع ميزة "الرجوع التوقّعي"

  • تمت إضافة NavigationBackHandler وrememberNavigationEventState لتبسيط عملية ربط SceneState بمعالجة ميزة "الرجوع التوقّعي" (onBackCompleted وonBackCancelled). يتيح ذلك لمكوّنات واجهة المستخدم المخصّصة إتاحة إيماءات الرجوع التوقّعي والتنقّل العادي للخلف بدون احتساب الفروق في حزمة الرجوع يدويًا.
  • تحسين عمليات الانتقال لإيماءة إظهار شاشة الرجوع، بما في ذلك إتاحة إيماءات إظهار شاشة الرجوع التي يتم تفعيلها في منتصف عملية التنفيذ أثناء الصور المتحركة للأمام

تغييرات أخرى

  • يتم الآن ضبط NavEntry.contentKey تلقائيًا على تركيبة من key.toString() وkey::class.toString()، ما يمنع حدوث تعارض في المفاتيح بين مفاتيح data object التي تشترك في الاسم البسيط نفسه على مستوى واجهات مختلفة.
  • تعطي EntryProvider الآن الأولوية للمطابقة استنادًا إلى الحالات الرئيسية بدلاً من الأنواع الرئيسية.
  • تمت إضافة عملية فحص باستخدام أداة Lint للتأكّد من أنّ عمليات تنفيذ Scene هي إما data classes أو تنفّذ equals وhashCode.

الإصدار 1.2.0-rc01

‫9 سبتمبر 2026

تم طرح androidx.navigation3:navigation3-*:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • عدم السماح بتكرار أسماء العناصر النائبة في أنماط معرّف الموارد المنتظم (URI) للروابط لصفحات في التطبيق (I8985c، b/522343165)

الإصدار 1.2.0-beta01

‫26 أغسطس 2026

تم طرح androidx.navigation3:navigation3-*:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إعادة تصميم DeepLinkRequest.extras من Map<String, Any> إلى فئة جديدة تشبه الخريطة وآمنة من حيث النوع RequestExtras، وتخزِّن أزواجًا من RequestExtrasKey<T> إلى T. يمكن إنشاء مثيل RequestExtras باستخدام لغة DSL requestExtras. (Ic929d، b/543883369)

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم تحرُّك الإيماءات التنبؤية للرجوع التي يتم تفعيلها أثناء الانتقال إلى الأمام استجابةً لمستوى تقدّم التمرير السريع. سيتم الآن عرض صور متحركة لإيماءة إظهار شاشة الرجوع وإكمالها بشكل صحيح. (Icdcb0، b/456218398)
  • تمت إضافة عملية فحص lint للتأكّد من أنّ عمليات تنفيذ Scene هي إما فئات بيانات أو تنفّذ الدالتَين equals وhashcode لضمان استخدام Scene نفسه عند الاقتضاء. (Ibdf0d، b/542316099)
  • يتم ضبط قيمة NavEntry.contentKey تلقائيًا على مجموعة من key.toString() وkey::class.toString(). يضمن ذلك ألا يكون لكائنات البيانات التي تحمل الاسم نفسه ولكنها تنفّذ واجهات مختلفة contentKey نفسه. ومع ذلك، لا تعرض منصة JavaScript key::class سوى اسم الفئة البسيط بدلاً من الاسم المؤهَّل بالكامل، لذا يجب أن تواصل منصة JavaScript تنفيذ contentKey المخصّص لكائنات البيانات التي تحمل أسماء مكرّرة. (I1fbbb، b/512534342)
  • تم إصلاح الخطأ IllegalArgumentException الذي تم طرحه بواسطة SaveableStateProvider للمفاتيح المكرّرة المستخدَمة أثناء التنقّل السريع للخلف عندما تكون هناك انتقالات متعددة للظهور في المقدّمة قيد التنفيذ. (I4d728، b/516312097)

الإصدار 1.2.0-alpha07

‫29 يوليو 2026

تم طرح androidx.navigation3:navigation3-*:1.2.0-alpha07. يتضمّن الإصدار 1.2.0-alpha07 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة فئة مجرّدة WrappedMatchResult لتضمين فئة أخرى DeepLinkMatcher.MatchResult. يتيح ذلك عرض نتائج مباريات مخصّصة فوق بعضها البعض. (I7d4dc، b/470282247)
  • تمت إضافة فئة BackStackMatcher جديدة تأخذ مَعلمتَين: مثيل أداة مطابقة، ودالة lambda منشئ توفّر نتيجة مطابقة أداة المطابقة للإدخال وتعرض الأنشطة السابقة. عند العثور على تطابق ناجح، تعرض الدالة BackStackMatcher القيمة BackStackMatchResult التي توسّع WrappedMatchResult التي تحتوي على نتيجة التطابق الأصلية بالإضافة إلى سجلّ الرجوع الذي تم إنشاؤه باستخدام تعبير lambda. لا يمكن إنشاء BackStackMatcher إلا باستخدام وظيفة الإضافة الجديدة DeepLinkMatcher.withBackStack. (Ibf987، b/470282247)

  • تمت إضافة فئة مجرّدة DeepLinkSerializer توسّع KSerializer لترميز value : T وفك ترميزه كـ String. يمكن استخدام DeepLinkSerializer لتسلسل وسيطات الروابط لصفحات معيّنة غير الأساسية. متوافق مع rememberSaveable وrememberNavBackStack. (Id3c9f، b/470282247)

  • أضافت DeepLinkMatcher مَعلمة نوع ثانية out R : DeepLinkMatcher.MatchResult<T> ليتمكّن المطوّرون من الوصول إلى خصائص الفئة الفرعية MatchResult التي تعرضها الدالة DeepLinkMatcher.match() بدون تحويل النوع. (I693d3، b/470282247)

  • تم تغيير الحدّ الأعلى لـ DeepLinkMatcher.MatchResult's T من Any? إلى Any. (I6bf1a)

  • يتم الآن ضبط حقل أداة إنشاء DeepLinkRequest uri تلقائيًا على القيمة الخالية. تمت إعادة تسمية uriString للدالة الإنشائية الثانوية إلى uri. (Ia0f14، b/522194187)

إصلاح الأخطاء

  • يستخدم ResultEffect الآن rememberUpdatedState لالتقاط أحدث دالة onResult Lambda. (I7d2a3، b/531709234)
  • تم إصلاح مطابقة الروابط لصفحات معيّنة في التطبيق مع أجزاء المسار الفارغة. إذا كان نوع الوسيطة هو "سلسلة"، سيتم التعامل مع المسار الفارغ كقيمة سلسلة فارغة. بخلاف ذلك، سيتم التعامل مع المسار الفارغ على أنّه لم يتم تقديم أي قيمة وسيتم الرجوع إلى القيمة التلقائية. إذا لم تكن هناك قيمة تلقائية، سيتعذّر الربط. (I56575، b/535298128)
  • تمت إضافة إمكانية استخدام قيم طلبات بحث فارغة في DeepLinkRequest.uri. إذا كانت الوسيطة من النوع String، سيتم التعامل مع القيمة الفارغة كسلسلة فارغة حرفية. بخلاف ذلك، يتم التعامل مع القيمة الفارغة على أنّها قيمة غير متوفّرة، وستحاول المطابقة الرجوع إلى القيمة التلقائية. وفي حال عدم توفّر قيمة تلقائية، ستتعذّر عملية المطابقة. (I30343، b/535127459)
  • تعطي EntryProvider الآن الأولوية للمطابقة استنادًا إلى الحالات الرئيسية على أنواع المفاتيح. (Ib5ec9، b/533331924)
  • تعمل أداة SceneState الآن على احتساب المشاهد السابقة بشكل صحيح بدءًا من المشهد غير المتراكب في الأعلى. (I91915، b/513630541)

الإصدار ‎1.2.0-alpha06

‫15 يوليو 2026

تم طرح androidx.navigation3:navigation3-*:1.2.0-alpha06. يتضمّن الإصدار 1.2.0-alpha06 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مستندات UriDeepLinkMatcher حول أجزاء URI لتوضيح أنّ الأجزاء التي تحتوي على أحرف بدل ستتطابق مع أي إدخال، ولكن لن يتم استخراج الإدخال كمعلَمات. (I5ad9b، b/524677091)
  • تم إصلاح الخطأ الذي يؤدي إلى عدم تطابق UriDeepLinkMatcher مع الطلب إذا كان نمط معرّف الموارد المنتظم لا يحتوي على نظام أو لا يبدأ بشرطتين مائلتين مزدوجتين. على سبيل المثال، ستتم الآن مطابقة www.example.com/home مع http://www.example.com/home. (Ia6b65، b/522791926)

الإصدار ‎1.2.0-alpha05

‫01 يوليو 2026

تم طرح androidx.navigation3:navigation3-*:1.2.0-alpha05. يتضمّن الإصدار 1.2.0-alpha05 هذه التعديلات.

واجهة برمجة تطبيقات جديدة

  • تمت إضافة واجهة برمجة تطبيقات rememberResultEventBus تعرض ResultEventBus يمكن تمريرها إلى rememberResultEventBusNavEntryDecorator. يتيح ذلك نقل ResultEventBus إلى خارج ResultEventBusNavEntryDecorator. (Ia655b، b/516995400)

DeepLinkRequest

  • تمت إضافة دالتَي إنشاء متوافقتَين مع KMP، إحداهما تقبل DeepLinkUri والأخرى تقبل سلسلة uri أولية. (I3c088، b/513200887، b/522194187)
  • (على أجهزة Android فقط) تمت إضافة أداة إنشاء تأخذ Intent. (Ia0498، b/513200887، b/522194187)
  • تحتوي جميع أدوات الإنشاء على حقل extras إضافي لـ Map<String, Any> من أجل إرفاق معلومات الطلب الإضافية. (If81d5، b/513200887)
  • تمت إضافة requestExtras dsl جديد كطريقة آمنة من حيث النوع لإنشاء خريطة للإضافات. توفّر لغة dsl الدالة put لتخزين أزواج من RequestExtrasKey إلى Any. يمكن استخدام دالة الإضافة Map<String, Any>.get(key) للقراءة من الخريطة باستخدام RequestExtrasKey(I5091c، b/513200887)
  • (على أجهزة Android فقط) تمت إضافة الدالتَين ActionExtrasKey وactionExtra لإنشاء خريطة إضافات باستخدام ActionExtrasKey. (Id0c90، [b/513200887]
  • تمت إضافة الدالتَين MimeTypeExtrasKey وmimeTypeExtra لإنشاء خريطة إضافات باستخدام MimeTypeExtrasKey. (I85131، b/513200887)

DeepLinkMatcher

  • تمت إضافة الدالتَين DeepLinkMatcher.mimeTypeFilter وDeepLinkMatcher.actionFilter لإنشاء DeepLinkMatcher.Filters التي تفلتر DeepLinkRequest حسب mimeType أو action (على أجهزة Android فقط). يتطابق كلا الفلترَين من خلال تساوي السلسلة وهما غير حسّاسَين لحالة الأحرف. (Ie7e67، b/513191950)

التغييرات في واجهة برمجة التطبيقات

DeepLinkRequest

  • إزالة الدالة الأصلية fromAction لإنشاء طلب مرتبط بإجراء، استخدِم الحقل الجديد DeepLinkRequest.extras.(Id0c90، b/513200887)
  • تمت إزالة دالة المصنع fromMimeType. لإنشاء طلب مرتبط بنوع MIME، استخدِم الحقل الجديد DeepLinkRequest.extras. (I85131، b/513200887)
  • (على أجهزة Android فقط) تمت إزالة الدالة fromIntent الخاصة بالمصنع. تم استبداله بمنشئ جديد يأخذ Intent وخريطة إضافات. (Ia0498، b/513200887، b/522194187)
  • تمت إزالة الدالتَين fromUri وfromUriString. تم استبدالها بمنشئات جديدة تقبل إما DeepLinkUri أو معرّف موارد منتظمًا (URI) كسلسلة أولية. (Id5b6f، b/522194187)
  • تتلقّى الفئتان DeepLinkMatcher وDeepLinkMatcher.MatchResult وفئاتهما الفرعية الآن T متغيرًا مشتركًا (خارج T) حتى لا تحتاج المفاتيح الهرمية إلى تحويل النوع عند استخدامها مع Matchers. (I1e453، b/525094876)
  • يتم الآن ضبط قيمة المَعلمة UriMatchResult الخاصة بإنشاء خريطة الوسيطات على خريطة فارغة تلقائيًا. (I3acdd)
  • أصبحت فئة DeepLinkMatcher.Filter المجردة الآن واجهة وظيفية. تمت إزالة حقل أداة الإنشاء filter، وبدلاً من ذلك يجب تمريره مباشرةً في الفئة الفرعية. (I9eb7d، b/522194187)

إصلاح الأخطاء

  • تم إصلاح مشكلة اختفاء الإدخال المنبثق فورًا عند الانتقال إلى إدخال يحتوي على بيانات وصفية متداخلة تتضمّن قيم lambda. (Idb872، b/520494430)
  • تم إصلاح UriDeepLinkMatcher ليعرض قيمة فارغة UriMatchResult بدلاً من عرض MissingFieldException عند عدم توفّر الوسيطات المطلوبة أثناء المطابقة. (I5322f، b/524663005)
  • لا يمكن مطابقة UriDeeplinkMatcher يحتوي على معرّف الموارد المنتظم (URI) مع مخطّط https إلا مع الطلبات التي تتضمّن أيضًا مخطّط https. (Ibfe22، b/522304329)
  • يجب إصلاح UriDeepLinkMatcher لتحديد مخطط http بشكل صحيح على أنّه تطابق إيجابي مع https عند مطابقة DeepLinkRequest مع UriDeepLinkMatcher. (I3a62b، b/518804264)
  • تعرض الدالة DeepLinkMatcher.MatchResult الآن القيمة 0 تلقائيًا عندما تكون نتيجتان متساويتين. (I48ddb، b/518841353)
  • ستعرض السمة UriDeepLinkMatcher الآن قيمة فارغة UriMatchResult بدلاً من عرض استثناء عند تعذُّر طلب المطابقة بسبب عدم توفّر الوسيطات المطلوبة. (I669a7، b/470282247، b/512923412)

الإصدار ‎1.2.0-alpha04

‫3 يونيو 2026

تم طرح androidx.navigation3:navigation3-*:1.2.0-alpha04. يتضمّن الإصدار 1.2.0-alpha04 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة تحريك العناصر المركّبة حيث تتم إعادة تحريك العناصر المركّبة المتداخلة، مثل ModalBottomSheet، بشكل غير متوقع عند إغلاق العناصر المركّبة التي تعلوها. (Ia2b9e، b/502624496)

الإصدار ‎1.2.0-alpha03

‫19 مايو 2026

تم طرح androidx.navigation3:navigation3-*:1.2.0-alpha03. يتضمّن الإصدار 1.2.0-alpha03 هذه التعديلات.

الميزات الجديدة

يتيح الإصدار 3 من Navigation الآن استخدام الروابط لصفحات معيّنة مع DeepLinkRequest وDeepLinkMatcher:

  • DeepLinkRequest رابط لصفحة في التطبيق يحتوي على DeepLinkUri ونوع MIME أو إجراء اختياري(على أجهزة Android فقط). بالإضافة إلى الفئة الجديدة، هناك دوال مصاحبة لإنشاء مثيل باستخدام uri أو mimeType أو action. يتضمّن نظام التشغيل Android أيضًا أداة مساعدة لإنشاء طلب من Intent. (Iaaac9، b/470282247)

    val uriOnlyRequest = DeepLinkRequest.fromUriString("https://sampledeeplink.com/home")
    val uriAndMimeRequest = DeepLinkRequest.fromUriString(
      "https://sampledeeplink.com/user/profile?id=123",
      "image/png"
    )
    
  • يمثّل DeepLinkMatcher رابطًا لصفحة معيّنة في التطبيق يمكن مطابقته مع DeepLinkRequest. يرتبط كل مثيل أداة مطابقة بمفتاح التنقّل الذي يتيح هذا الرابط لصفحة معيّنة. يمكن ربط مفتاح تنقّل بعناصر مطابقة متعددة. سيؤدي طلب DeepLinkMatcher.match إلى عرض MatchResult يحتوي على مفتاح التنقّل المرتبط في حال نجاح المطابقة. هناك طريقتان تلقائيتان لتنفيذ DeepLinkMatcher: UriDeepLinkMatcher لمطابقة الروابط لصفحات معيّنة استنادًا إلى Uri، وStaticKeyDeepLinkMatcher لمطابقة الروابط لصفحات معيّنة التي تتضمّن DeepLinkMatcher.Filter فقط والتي تتم مطابقتها من خلال Boolean. (I3798e، b/470282247)

  • UriDeepLinkMatcher هي عملية تنفيذ DeepLinkMatcher تتضمّن آراءً وتتعامل مع الروابط لصفحات معيّنة من خلال مطابقة DeepLinkUri مع مفتاح تنقّل قابل للتسلسل. وهي تتيح وسيطات الروابط لصفحات معيّنة من الأنواع الأساسية أو مجموعة من العناصر الأساسية، مثل القوائم والمصفوفات والمجموعات. (I1520b، b/470282247)

    @Serializable
    data class UserKey(val id: Int): NavKey
    
    // declare a deep link supported by UserKey
    val userMatcher = UriDeepLinkMatcher(
      uriPattern = "www.sampledeeplink.com/user?userId={id}",
      serializer = serializer<UserKey>()
    )
    
    // handle a requested deep link with fallback key
    val key = userMatcher.match(deepLinkRequest)?.key ?: HomeKey
    
  • تمت إضافة DeepLinkUri، وهو إصدار متوافق مع منصات متعددة من Kotlin لـ android.net.Uri (Id4725، b/470282247)

التغييرات في واجهة برمجة التطبيقات

  • تمت ترقية الإصدار إلى compileSdk 37 لمطابقة compileSdk في Compose

إصلاح الأخطاء

  • تم إصلاح IllegalArgumentException في AnimatedBottomSheetSample عند عرض تراكبات متعددة. سيحسب المثال SceneStrategy الآن بشكلٍ صحيح آخر قيمة غير OverlayScene ويعرضها تحت جميع المشاهد المتراكبة. (If2281، b/506733412)
  • تمت ترقية إصدار التبعية NavigationEvent إلى 1.1.1، ما يؤدي إلى إزالة NavigationEventHandler غير الفعّال عند استخدام وضع الفحص لتفعيل ميزة "إيماءة إظهار شاشة الرجوع" في الإصدارات التجريبية من "استوديو Android". (I487fd)

الإصدار 1.2.0-alpha02

‫22 أبريل 2026

تم طرح androidx.navigation3:navigation3-*:1.2.0-alpha02. يتضمّن الإصدار 1.2.0-alpha02 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • أعِد تسمية onBack إلى onBackCompleted وأضِف onBackCancelled إلى NavigationBackHandler لتوفير إمكانية التعامل مع إيماءات الرجوع التي تم إلغاؤها. (I92741)
  • أضِف NavigationBackHandler لتبسيط التعامل مع إيماءات الرجوع وإيماءة الرجوع التوقّعية عند استخدام SceneState. يتيح ذلك للمطوّرين إنشاء مكوّنات واجهة مستخدم مخصّصة بسهولة أكبر تتوافق مع التنقّل للخلف العادي والإيماءات التوقّعية بدون احتساب الفروق في الأنشطة السابقة يدويًا. (I6a055)
  • أضِف rememberNavigationEventState لتسهيل عملية الربط SceneState من خلال معالجة إيماءة إظهار شاشة الرجوع. (Iae49c)

الميزات الجديدة

  • تمت إضافة واجهة برمجة تطبيقات ResultEventBus للسماح بتمرير النتائج بين NavEntries باستخدام LocalResultEventBus المقدَّمة من خلال ResultEventBusNavEntryDecorator الجديدة. يمكن تقييم النتائج التي تم اجتيازها كحالة باستخدام ResultEventBus#conflateAsState أو كسلسلة من النتائج باستخدام ResultEffect.

الإصدار 1.2.0-alpha01

‫8 أبريل 2026

تم طرح androidx.navigation3:navigation3-*:1.2.0-alpha01. يتضمّن الإصدار 1.2.0-alpha01 هذه التعديلات.

إصلاح الأخطاء

  • لن يؤدي الوصول إلى LocalNavAnimatedContentScope من OverlayScene إلى حدوث IllegalStateException لأنّ OverlayScenes تتضمّن الآن LocalAnimatedContentScope لا تنفّذ أي عملية. (I2f00c، b/486067688)

الإصدار 1.1.7

‫26 أغسطس 2026

تم طرح androidx.navigation3:navigation3-*:1.1.7. يتضمّن الإصدار 1.1.7 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم تحرُّك الإيماءات التنبؤية للرجوع التي يتم تفعيلها أثناء الانتقال إلى الأمام استجابةً لمستوى تقدّم التمرير السريع. سيتم الآن عرض صور متحركة لإيماءة إظهار شاشة الرجوع وإكمالها بشكل صحيح. (Icdcb0، b/456218398)

الإصدار 1.1.6

‫12 أغسطس 2026

تم طرح androidx.navigation3:navigation3-*:1.1.6. يتضمّن الإصدار 1.1.6 هذه التعديلات.

إصلاح الأخطاء

  • يتم ضبط قيمة NavEntry.contentKey تلقائيًا على مجموعة من key.toString() وkey::class.toString(). يضمن ذلك ألا يكون لكائنات البيانات التي تحمل الاسم نفسه ولكنها تنفّذ واجهات مختلفة contentKey نفسه. ومع ذلك، لا تعرض منصة JavaScript key::class سوى اسم الفئة البسيط بدلاً من الاسم المؤهَّل بالكامل، لذا يجب أن تواصل منصة JavaScript تنفيذ contentKey المخصّص لكائنات البيانات التي تحمل أسماء مكرّرة. (I1fbbb، b/512534342)
  • تم إصلاح الخطأ IllegalArgumentException الذي تم طرحه بواسطة SaveableStateHolder بسبب إعادة استخدام المفتاح عندما تكون عمليات انتقال متعددة إلى الأنشطة السابقة قيد التنفيذ في الوقت نفسه بسبب الرجوع السريع من الأنشطة السابقة. (I4d728، b/516312097)

الإصدار 1.1.5

‫29 يوليو 2026

تم طرح androidx.navigation3:navigation3-*:1.1.5. يتضمّن الإصدار 1.1.5 هذه التعديلات.

إصلاح الأخطاء

  • تعطي entryProvider لغة DSL الآن الأولوية NavEntry التي تم إنشاؤها باستخدام مثيل مفتاح، مثل entry(key = userKey) { ... } على NavEntry التي تم إنشاؤها باستخدام فئة مفتاح مثل entry<UserKey>{ ... }.(Ib5ec9، b/533331924)

الإصدار 1.1.4

‫01 يوليو 2026

تم طرح androidx.navigation3:navigation3-*:1.1.4. يتضمّن الإصدار 1.1.4 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة اختفاء الإدخال المنبثق فورًا عند الانتقال إلى إدخال يحتوي على بيانات وصفية متداخلة تتضمّن قيم lambda. (Idb872، b/520494430)

الإصدار 1.1.3

‫17 يونيو 2026

تم طرح androidx.navigation3:navigation3-*:1.1.3. يتضمّن الإصدار 1.1.3 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة تحريك العناصر المركّبة حيث تتم إعادة تحريك العناصر المركّبة المتداخلة، مثل ModalBottomSheet، بشكل غير متوقع عند إزالة العناصر المركّبة التي تعلوها. (Ia2b9e، b/502624496)

  • تمت ترقية تبعية NavigationEvent إلى الإصدار 1.1.2 الذي أزال NavigationEventHandler غير الفعّال عند استخدام وضع الفحص لتفعيل ميزة "الرجوع التوقّعي" في الإصدارات التجريبية من "استوديو Android".

الإصدار 1.1.2

‫19 مايو 2026

تم طرح androidx.navigation3:navigation3-*:1.1.2. يتضمّن الإصدار 1.1.2 هذه التعديلات.

إصلاح الأخطاء

  • تمت ترقية تبعية NavigationEvent إلى الإصدار 1.1.1 الذي أزال NavigationEventHandler غير الفعّال عند تفعيل وضع الفحص لتفعيل ميزة "الرجوع التوقّعي" في الإصدارات التجريبية من "استوديو Android".

الإصدار 1.1.1

‫22 أبريل 2026

تم طرح androidx.navigation3:navigation3-*:1.1.1. يتضمّن الإصدار 1.1.1 هذه التعديلات.

إصلاح الأخطاء

  • لن يؤدي الوصول إلى LocalNavAnimatedContentScope من OverlayScene إلى حدوث IllegalStateException لأنّ OverlayScenes تتضمّن الآن LocalAnimatedContentScope لا تنفّذ أي عملية. (I2f00c، b/486067688)

الإصدار 1.1.0

‫8 أبريل 2026

تم طرح androidx.navigation3:navigation3-*:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.

الإصدار 1.1.0 أصبح الآن إصدارًا ثابتًا

التغييرات المهمة منذ الإصدار 1.0.0

العناصر المشترَكة بين المشاهد - تتيح مكتبة Navigation3 الآن التعامل مع المشاهد كعنصر كائن مشترَك. هذا يعني أنّه عند تغيير المشاهد، يمكن ضمان الانتقال السلس بينها. يمكنك تفعيل ذلك من خلال تمرير SharedTransitionScope إلى NavDisplay أو إلى rememberSceneState.

SceneDecoratorStrategy - تم تقديم SceneDecoratorStrategy لدعم حالات الاستخدام، مثل تزيين المشاهد بمكوّنات شائعة في واجهة المستخدم أو مشاركة الحالة بين المشاهد.

NavMetadata DSL - توفّر Navigation3 الآن نوعًا جديدًا من البيانات الوصفية DSL الآمنة. تستخدم لغة DSL واجهة MetadataKey جديدة تتيح تحديد أنواع المفاتيح والقيم التي يريدون تقديمها إلى خريطة البيانات الوصفية. أضفنا أيضًا NavMetadataKeys جديدًا لعمليات الانتقال NavDisplay حتى يمكن استخدامه مع لغة DSL الجديدة للبيانات الوصفية لإضافة عمليات انتقال إلى NavDisplay.

رسوم OverlayScene المتحركة - تحتوي واجهة OverlayScene على دالة رد نداء جديدة onRemoved لتعليق التنفيذ. يتم استدعاء دالة الرجوع هذه بعد إزالة مفتاح مرتبط بالمشهد من سجلّ الرجوع، ولكن قبل مغادرته التركيب. يسمح ذلك بإكمال الصور المتحركة للخروج التي يتم استدعاؤها في onRemoved قبل إزالة مشهد التراكب من التركيب.

تغييرات أخرى - تقبل السمتان NavDisplay وrememberSceneState الآن القيمة List<SceneStrategy> بدلاً من المَعلمة الفردية السابقة SceneStrategy التي تم ربطها باللاحقة then. - يمكنك الآن إضافة بيانات وصفية بشكل ديناميكي مع مراعاة مفتاح الإدخال من خلال EntryProvider DSL.

الإصدار 1.1.0-rc01

‫25 مارس 2026

تم طرح androidx.navigation3:navigation3-*:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • تضمن السمة NavDisplay الآن أنّه يتم تحديد الحدّ الأقصى لعدد مرات ظهور Lifecycle في الإدخالات المعروضة تحت التراكبات عند STARTED. يضمن ذلك استمرار عمل واجهات برمجة التطبيقات، مثل dropUnlessResumed، عند استخدام مربّعات الحوار. (If209f، b/483966071)
  • تم إصلاح مشكلة في NavDisplay حيث كان التنقّل ذهابًا وإيابًا بين الشاشات نفسها وإيقاف الرسوم المتحركة بين الشاشتين قد يؤدي إلى عدم صحة ترتيب الشاشات حسب محور z. (I4d491، b/459419800)

الإصدار 1.1.0-beta01

‫11 مارس 2026

تم طرح androidx.navigation3:navigation3-*:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.

الإصدار ‎1.1.0-alpha05

‫25 فبراير 2026

تم طرح androidx.navigation3:navigation3-*:1.1.0-alpha05. يتضمّن الإصدار 1.1.0-alpha05 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • يستخدم نظاما التشغيل NavDisplay وrememberSceneState الآن List<SceneStrategy> بدلاً من المَعلمة الفردية السابقة SceneStrategy التي تم ربطها باللاحقة then. يتوافق ذلك بشكل أكبر مع List<SceneDecoratorStrategy<T>> التي تستخدمها كلتا واجهتَي برمجة التطبيقات حاليًا. تم إيقاف العمل بواجهات برمجة التطبيقات السابقة. (I78b2c، b/482108465)
  • تمت إضافة عامل التشغيل #contains الخاص بالبيانات الوصفية للتحقّق مما إذا كانت خريطة البيانات الوصفية تحتوي على NavMetadataKey المحدّد. (Ic30db، b/485311895)
  • تمت إضافة NavMetadataKey DialogKey لاستخدامها مع DialogSceneStrategy في لغة المجال الخاصة بالبيانات الوصفية. (Ic7a26، b/483388817)

الإصدار 1.1.0-alpha04

‫11 فبراير 2026

تم طرح androidx.navigation3:navigation3-*:1.1.0-alpha04. يتضمّن الإصدار 1.1.0-alpha04 هذه التعديلات.

الميزات الجديدة

  • توفّر مكتبة Navigation3 الآن لغة DSL جديدة للبيانات الوصفية آمنة الأنواع. تستخدم لغة DSL واجهة MetadataKey جديدة تتيح تحديد أنواع المفاتيح والقيم التي يريدون تقديمها إلى خريطة البيانات الوصفية. أضفنا أيضًا NavMetadataKey جديدة لعمليات الانتقال NavDisplay حتى يمكن استخدامها مع لغة metadata DSL الجديدة لإضافة عمليات انتقال إلى NavDisplay. (Ic10ef وIc049c وb/476213928)

التغييرات في واجهة برمجة التطبيقات

  • تتضمّن واجهة OverlayScene دالة معاودة الاتصال الجديدة onRemoved الخاصة بالإيقاف المؤقت. يتم استدعاء دالة الرجوع هذه بعد إزالة مفتاح مرتبط بالمشهد من سجلّ الرجوع، ولكن قبل مغادرته التركيب. يسمح ذلك بإكمال الصور المتحركة للخروج التي يتم استدعاؤها ضِمن onRemoved قبل إزالة مشهد التراكب من التركيب. (I29a72، b/440558061)
  • تم فصل دالة الزخرفة في SceneStrategy إلى دالة جديدة SceneDecoratorStrategy. هذه الواجهة الجديدة هي التي يجب استخدامها لتزيين المشاهد. تتوفّر واجهات برمجة تطبيقات جديدة لـ NavDisplay وrememberSceneState تتيح إضافة SceneDecoratorStrategies. (If9385، b/477669607، b/477670333)

إصلاح الأخطاء

  • تم إصلاح خطأ كان يحدث عند تمرير SharedTransitionLayout إلى NavDisplay أو rememberSceneState واستخدام أي OverlayScene، ما كان يؤدي إلى حدوث عطل لأنّ استخدام SharedTransitionLayout لا يعمل إلا مع NavEntries التي يتم عرضها كجزء من AnimatedContent، ويتم عرض OverlayScene في نوافذ منفصلة. (I1bb76، b/478664101)

تحديث الاعتمادية

  • من الإصدار 1.0.1 من Navigation3: يعتمد Navigation3 الآن على الإصدار 1.0.2 من NavigationEvent. يحلّ هذا الخطأ IllegalStateException الناتج عن استخدام NavDisplay أثناء AndroidStudio المعاينات. (Id7212، b/477149762)

الإصدار ‎1.1.0-alpha03

‫28 يناير 2026

تم طرح androidx.navigation3:navigation3-*:1.1.0-alpha03. يتضمّن الإصدار 1.1.0-alpha03 هذه التعديلات.

الميزات الجديدة

  • يمكنك الآن إضافة بيانات وصفية بشكل ديناميكي مع مراعاة مفتاح الإدخال من خلال EntryProvider DSL. (I942fb، b/474416976)

الإصدار ‎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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تتيح Navigation3 الآن التعامل مع المشاهد كعنصر كائن مشترك. هذا يعني أنّه عند تغيير المشاهد، يمكن ضمان الانتقال السلس بينها. يمكنك تفعيل ذلك من خلال تمرير SharedTransitionScope إلى NavDisplay أو إلى rememberSceneState. (I15868)

الإصدار 1.0

الإصدار 1.0.1

‫11 فبراير 2026

تم طرح androidx.navigation3:navigation3-*:1.0.1. يتضمّن الإصدار 1.0.1 هذه التعديلات.

تحديث الاعتمادية

  • يعتمد Navigation3 الآن على الإصدار 1.0.2 من NavigationEvent. يحلّ هذا الخطأ IllegalStateException الناتج عن استخدام NavDisplay أثناء AndroidStudio المعاينات. (Id7212، b/477149762)

الإصدار 1.0.0

‫19 نوفمبر 2025

تم طرح androidx.navigation3:navigation3-*:1.0.0. يتضمّن الإصدار 1.0.0 هذه التعديلات.

نقدّم لك Navigation3!

الإصدار ‎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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • يحتوي 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • لم يعُد بإمكانك استخدام طريقة الدفع calculateScene على SceneStrategy @Composable. بدلاً من ذلك، ننصحك بنقل هذا العمل إلى إنشاء طريقة SceneStrategy (أي في طريقة rememberMySceneStrategy()) التي تتيح لك بالكامل تحديد مدة صلاحية أي قيم rememberSaveable أو عبارات remember الرئيسية من القيم الصحيحة. (If1733، b/448709506)
  • تم نقل المَعلمة onBack الخاصة بـ SceneStrategy.calculateScene إلى نطاق المتلقّي الجديد SceneStrategyScope لتوضيح أنّ هذه المَعلمة اختيارية وتوفير نقطة توسيع لميزات Navigation3 المستقبلية. (I3aea3، b/448460407)
  • لم يعُد onBack lambda الذي تم تمريره إلى NavDisplay وإلى SceneStrategy يوفّر المَعلمة count: Int للإشارة إلى الوقت الذي يجب فيه إزالة إدخالات متعددة. بدلاً من ذلك، سيتم الآن استدعاء دالة lambda () -> 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)
  • لم يعُد من الضروري استخدام LocalEntriesToRenderInCurrentScene composition local، الذي أصبح الآن داخليًا، مع العروض المخصّصة التي تستخدم SceneState كبديل لاستخدام NavDisplay. (Ic40ef، b/414668196)
  • تمت إزالة SceneSetupNavEntryDecorator وrememberSceneSetupNavEntryDecorator() من مساحة واجهة برمجة التطبيقات المتاحة للجميع. تتوفّر هذه الوظيفة الآن تلقائيًا بدون الحاجة إلى تضمينها يدويًا. (Ieae42، b/444479133)
  • تتضمّن الآن كل من NavEntry وDialogScene وSinglePaneScene وSceneState الدالة equals. (I96121)
  • تتضمّن واجهة المشهد حقل بيانات وصفية جديدًا لإرفاق بيانات وصفية خاصة بالمشهد في NavDisplay. يتيح ذلك لـ "مشهد" إلغاء بيانات التعريف في NavDisplay، على سبيل المثال باستخدام عمليات الانتقال. (I1fd96، b/443955625)
  • بسِّط توقيع rememberNavBackStack من خلال إزالة مَعلمة النوع العام المكرّرة. تقبل الدالة الآن vararg elements: NavKey. (I03e45)
  • أصبحت الرسوم المتحركة التلقائية لـ NavDisplay جزءًا من واجهة برمجة التطبيقات الشائعة التي تتيح استدعاءها من جميع المنصات. (I71af9، b/447147159)
  • أعِد تسمية EntryProviderBuilder إلى EntryProviderScope لتعكس بدقة أنّ الفئة هي لغة خاصة بالنطاق (DSL) في Kotlin توفّر نطاقًا لإنشاء 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • أضِف حمولة زائدة جديدة NavDisplay تأخذ قائمة NavEntry<T> تم تزيينها بواسطة rememberDecoratedNavEntries. (I4025b، b/441940314)
  • تم نقل DialogScene إلى حزمة جديدة. (Ia5840)
  • إزالة واجهة برمجة التطبيقات العامة 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)
  • تم تعديل واجهات برمجة التطبيقات الخاصة بمعالج navigationevent-compose. تتيح الآن السمتان NavigationEventHandler وNavigationBackHandler (والسمات المتغيرة) تحميلًا جديدًا يقبل السمة NavigationEventState التي تم نقلها. يتم الاحتفاظ بالتحميلات الزائدة البسيطة (التي تتضمّن currentInfo) وتستخدم الآن نموذج الحالة الجديد هذا داخليًا. (Ic3251، b/444734264)
  • تم نقل جميع واجهات برمجة التطبيقات الخاصة بالمشاهد من navigation3-ui إلى navigation3-runtime. وهذا يعني أنّها أصبحت متاحة الآن على جميع المنصات المتوافقة مع navigation3-runtime. (I431d0، b/444449993)
  • تمت إضافة حمولة زائدة جديدة rememberDecoratedNavEntries تأخذ قائمة NavEntry لإضافة مَعلمات. يمكن أن تكون إدخالات الإدخال مزيّنة مسبقًا بمزيّنات إدخال أخرى. (I5a034، b/444230270)
  • إزالة مَعلمات نوع حرف البدل في Navigation3 (I02540)
  • تم تحسين طريقة التعامل مع الأنواع العامة في لغة 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تم استبدال 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-alpha08

‫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)، والويب (JavaScript وWasmJS). (I55078 وb/424410398 وb/419294028 وb/419046226) ملاحظة: لا يوفّر ذلك استهدافات KMP لعنصر Navigation3 UI. على المنصات الأخرى، عليك تنفيذ NavDisplay مخصّص خاص بك. إذا أردت أن يصبح هذا الخيار متاحًا، يُرجى التصويت على المشكلة في Jetbrains هنا ومتابعة حالة الطلب للحصول على دعم إضافي.
  • أصبح الكائن NavDisplayInfo الآن متاحًا للجميع ويمكن استخدامه لاسترداد قائمة الإدخالات المرئية من NavDisplay. (Ibc91f)

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة NavBackStackSerializer جديد لاستخدامه مع rememberNavBackStack لتنفيذ عملية استعادة الحالة. يتلقّى rememberNavBackStack() الآن أيضًا SavedStateConfiguration يمكن استخدامه لتقديم الإعدادات الخاصة بك. (I2f4d2 وI4cd58 وb/420443609)

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت تتسبّب في إطلاق أحداث Lifecycle غير صحيحة عند التنقّل. (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 من المستوى 21 لواجهة برمجة التطبيقات إلى المستوى 23 لواجهة برمجة التطبيقات (Ibdfca وb/380448311 وb/435705964 وb/435705223).

التغييرات في واجهة برمجة التطبيقات

  • تستخدم 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. وهذا يعني أنّه يجب استبدال أدوات التزيين على طول حِزم السجلّ الخلفي في حال توفّر حِزم سجلّ خلفي متعددة من أجل الحفاظ على حالة NavEntry في حزمة السجلّ الخلفي. وفي ما عدا ذلك، ستتم إزالة الحالات كما لو تم إيقاف الإدخالات (بدلاً من التبديل). (I7a759، b/428033667)

الإصدار ‎1.0.0-alpha04

‫18 يونيو 2025

تم طرح androidx.navigation3:navigation3-*:1.0.0-alpha04. يتضمّن الإصدار ‎1.0.0-alpha04 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • أصبحت NavEntry.content خاصة الآن. لاستدعاء محتوى NavEntry، استخدِم واجهة برمجة التطبيقات الجديدة 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 Compose. يوفر العنصر androidx.navigation3.runtime اللبنات الأساسية، بينما يوفّر العنصر androidx.navigation3.ui طبقة واجهة المستخدم من خلال واجهة برمجة التطبيقات 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.