Compose Runtime
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
(الاطّلاع على مستندات مرجع واجهة برمجة التطبيقات لجميع حِزم Compose)
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| 9 سبتمبر 2026 | 1.12.1 | - | - | 1.13.0-alpha03 |
البنية
Compose هي مجموعة من 7 أرقام تعريف لمجموعات Maven ضِمن androidx. تحتوي كل مجموعة على مجموعة فرعية مستهدَفة من الوظائف، ولكل منها مجموعة ملاحظات إصدار خاصة بها.
يوضّح هذا الجدول المجموعات ويتضمّن روابط لكل مجموعة من ملاحظات الإصدار.
| مجموعة | الوصف |
|---|---|
| compose.animation | إنشاء رسوم متحركة في تطبيقات Jetpack Compose لإثراء تجربة المستخدم |
| compose.compiler | تحويل دوال @Composable وتفعيل عمليات التحسين باستخدام مكوّن إضافي لمترجم Kotlin |
| compose.foundation | يمكنك كتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع نطاق الأساس لإنشاء أجزاء نظام التصميم الخاص بك. |
| compose.material | إنشاء واجهات مستخدم Jetpack Compose باستخدام "مكوّنات التصميم المتعدد الأبعاد" الجاهزة للاستخدام هذه هي نقطة الدخول الأعلى مستوى في Compose، وهي مصمَّمة لتوفير مكوّنات تتطابق مع تلك الموضّحة في www.material.io. |
| compose.material3 | يمكنك إنشاء واجهات مستخدم Jetpack Compose باستخدام مكوّنات التصميم المتعدد الأبعاد 3، وهي التطوّر التالي في التصميم المتعدد الأبعاد. يتضمّن الإصدار 3 من Material تصميمات ومكوّنات محدّثة وميزات تخصيص Material You، مثل الألوان الديناميكية، وهو مصمّم ليكون متوافقًا مع النمط المرئي الجديد وواجهة مستخدم النظام في Android 12. |
| compose.runtime | الوحدات الأساسية لنموذج برمجة Compose وإدارة الحالة، ووقت التشغيل الأساسي الذي يستهدفه المكوّن الإضافي لبرنامج تجميع Compose |
| compose.ui | المكوّنات الأساسية لواجهة مستخدم Compose اللازمة للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال |
تحديد الاعتماديات
لإضافة اعتمادية على Compose، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
Groovy
dependencies { implementation "androidx.compose.runtime:runtime:1.11.4" implementation "androidx.compose.runtime:runtime-livedata:1.11.4" implementation "androidx.compose.runtime:runtime-rxjava2:1.11.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.11.4") implementation("androidx.compose.runtime:runtime-livedata:1.11.4") implementation("androidx.compose.runtime:runtime-rxjava2:1.11.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.13
الإصدار 1.13.0-alpha03
9 سبتمبر 2026
تم طرح androidx.compose.runtime:runtime-*:1.13.0-alpha03. يتضمّن الإصدار 1.13.0-alpha03 هذه التعديلات.
الأداء
- تضمين
SlotWriter.forAllDataInRememberOrderلإزالة عمليات التخصيص (Ie39f6)
الإصدار 1.13.0-alpha02
26 أغسطس 2026
تم طرح androidx.compose.runtime:runtime-*:1.13.0-alpha02. يتضمّن الإصدار 1.13.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
withLocalRetainedValuesStore، ما يتيح لك عرض قيم من دالة lambda الخاصة بالمحتوى. (I8e871، b/542168593) - تمت إضافة عمليات تحميل زائدة تقبل القيم الخالية من
rememberSerializableإلىMutableState. (I77b83، b/543285462)
الإصدار 1.13.0-alpha01
12 أغسطس 2026
تم طرح androidx.compose.runtime:runtime-*:1.13.0-alpha01. يتضمّن الإصدار 1.13.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
عدّلنا علامة الميزة
LinkTableلتقليل التنازع في مجموعات قواعد ProGuard المدمجة وزيادة التوافق عند تصغير تطبيق خارج Gradle. تغيّرت بنية Proguard المستخدَمة لضبط العلامة قليلاً. يمكنك الاطّلاع أدناه، مع ملاحظة الأقواس المضافة (I419da):-assumevalues public class androidx.compose.runtime.ComposeRuntimeFlags { static boolean isLinkBufferComposerEnabled() return true; }تقبل الدالتان
produceState()وFlow.collectAsState()الآن وسيطةSnapshotMutationPolicyللتحكّم في سياسة المساواة والدمج لكائنStateالأساسي. (I0c167، b/405128869)جعل
@ComposableTargetقابلة للتكرار يُرجى الاطّلاع على المستندات المعدَّلة للحصول على مزيد من المعلومات. (I99a89، b/481422057)تمت إضافة
RecompositionTracerلتسجيل مسار إبطال إعادة التكوين (I1dbc1 وIa991d وb/531813367)تم عرض عنصر قابل للملاحظة
keysفيSaveableStateHolderلتبسيط إدارة حالة التنقّل/سجلّ الرجوع وإزالة الحاجة إلى تتبُّعkeyخارجي. الوصول عبرholder.keysوالإزالة باستخدامremoveState(I9bbbb، b/398887924)تمت إضافة
staticCompositionLocalWithComputedDefaultOfلإنشاءProvidableCompositionLocalsالتي تعمل كقيم ثابتة عند توفيرها، أو يتم احتسابها عند عدم توفيرها. (I844e4)
إصلاح الأخطاء
- تم إصلاح مشكلة في
GapComposerيمكن أن تتسبّب في تنفيذ مثيلاتRememberObserverبشكل غير صحيح لعمليات معاودة الاتصال الخاصة بالنسيان بعد حظرwithCompositionLocalقبل مثيلاتRememberObserverفي الحظر. (I4d54c) - تم إصلاح استثناء منخفض الحجم عند الكتابة إلى عنصر حالة قابل للتغيير. (I48194، b/503110696)
- تم إصلاح خطأ في
SnapshotStateSet.writeToParcelكان يؤدي إلى تسلسل الإدخال الأول فقط. (I64f4c، b/537461421) - تم تعديل الرموز
CancellationExceptionالمستخدَمة لإلغاء الرموزLaunchedEffectالتي تم تذكُّرهاCoroutineScopesلتكون أكثر وضوحًا عند ظهورها في عمليات تتبُّع تسلسل استدعاء الدوال البرمجية. (I89840، b/449897855) - تم تحسين عملية تهيئة العنصر المصاحب لفئات القيم
compose:runtime(ComposeStackTraceModeوGroupKind) باستخدام دوال الجلب الديناميكية. (I50640) - إزالة شرط
compileSdk37 (If78b4)
المساهمة الخارجية
- تم إصلاح مشكلة عدم استجابة التركيبات الرئيسية عند إزالة التركيب الفرعي الذي يتضمّن خطأ أثناء استخدام ميزة "التعديل في الوقت الفعلي". (I3717c)
- تم إصلاح استعادة "التعديل في الوقت الفعلي" بعد حدوث خطأ في تركيبة فرعية، ما يتيح للتركيبات الرئيسية مواصلة رصد تغييرات الحالة. (I63fb5)
الإصدار 1.12
الإصدار 1.12.1
9 سبتمبر 2026
تم إصدار androidx.compose.runtime:runtime-*:1.12.1 بدون أي تغييرات منذ الإصدار 1.12.0. يتضمّن الإصدار 1.12.1 هذه التعديلات.
الإصدار 1.12.0
12 أغسطس 2026
تم طرح androidx.compose.runtime:runtime-*:1.12.0. يتضمّن الإصدار 1.12.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.11.0:
تعديلات على "جدول الفتحات التجريبية"
- أحرزنا تقدّمًا نحو تثبيت عملية تنفيذ
LinkTableالتجريبية التي تم طرحها في الإصدار 1.11. تم تصميم عملية التنفيذ الجديدة لتحسين أداء إعادة التركيب، خاصةً مع التغييرات العشوائية الصغيرة. نشجّع المستخدمين على تجربةSlotTableالجديدة والإبلاغ عن أي مشاكل تواجههم. يمكنك الاطّلاع علىComposeRuntimeFlags.isLinkBufferComposerEnabledللحصول على المزيد من المعلومات.
التأثير الجانبي مع واجهة برمجة التطبيقات Keys API
- تمت إضافة تحميل زائد إلى
SideEffectيقبل وسيطات المفتاح. يمكن استخدام واجهة برمجة التطبيقات الجديدة لتفعيلSideEffectلمرة واحدة بدون الحاجة إلىLaunchedEffectأوDisposableEffectاللذين لم يتم استخدام حظرCoroutineScopeأوonDisposeفيهما. (I528b2، b/476108743)
الإصدار 1.12.0-rc01
29 يوليو 2026
تم طرح androidx.compose.runtime:runtime-*:1.12.0-rc01. يتضمّن الإصدار 1.12.0-rc01 هذه التعديلات.
الإصدار 1.12.0-beta02
01 يوليو 2026
تم طرح androidx.compose.runtime:runtime-*:1.12.0-beta02. يتضمّن الإصدار 1.12.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح
ArrayIndexOutOfBoundsExceptionفيLinkComposerعند استخدامMovableContentمدمَجة. (I85daf)
الإصدار 1.12.0-beta01
17 يونيو 2026
تم طرح androidx.compose.runtime:runtime-*:1.12.0-beta01. يتضمّن الإصدار 1.12.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إرسال إشعارات إلى مراقبي تطبيق اللقطات إذا تم إنشاء عنصر حالة في إحدى اللقطات ثم تعديله في لقطة متزامنة قبل تطبيق اللقطة الأولى. (Ide27f، b/451479063)
- تم إصلاح مشكلة محتملة لتسرُّب الذاكرة في طريقة تتبُّع قيم
derivedStateOf()في التركيب. أدت عمليات الكتابة إلى الكائنات التي تمت قراءتها من خلال حالة مشتقة إلى احتفاظ التركيبة بمثيلderivedStateOf()إلى أن يتم التخلص من التركيبة. إذا لم يتم تذكُّرderivedStateOf()بشكل صحيح، قد يكون هذا التسريب كبيرًا لأنّ كل تركيبة قد تنشئ تركيبة جديدة. (Ib5d87، b/516904513) - تم إصلاح مشكلة في
LinkComposerكان من الممكن أن تتسبب في تخطّي العناصر القابلة للإنشاء بدلاً من إعادة إنشائها عند إبطالها أثناء الإنشاء. (Ie29fe) - تم إصلاح مشكلة في التحميل الزائد vararg للدالة
rememberكانت تمنع إبطال القيمة التي تم تذكّرها وتؤدي إلى عرض قيمة غير صحيحة من الدالة remember. حدث ذلك عند إعادة إنشاءrememberباستخدام عدد أقل من المفاتيح التي تتطابق مع المفاتيح السابقة باستثناء العناصر من نهاية المصفوفة. يجب إعادة تجميع الرمز البرمجي المتأثر لتلقّي هذا الإصلاح. (I0736b)
المساهمة الخارجية
- تمت إضافة تتبُّع تفصيلي لعمليات
DisposableEffectوSideEffectفي وقت تشغيل Compose. (Ie451f)
الإصدار 1.12.0-alpha03
19 مايو 2026
تم طرح androidx.compose.runtime:runtime-*:1.12.0-alpha03. يتضمّن الإصدار 1.12.0-alpha03 هذه التعديلات.
إصلاح الأخطاء
- تم حلّ عدة مشاكل في
LinkTableحيث تكون عمليات تتبُّع تسلسل استدعاء الدوال البرمجية التشخيصية غير مكتملة أو تتضمّن معلومات ناقصة (I3918c) - تم إصلاح مشكلة في نوع بيانات داخلي كان يمكن أن يتسبّب في حدوث خطأ في حالات نادرة مع المحتوى القابل للنقل. (Ic478f، b/507724717)
- تم إصلاح مشكلة في سلوك التخطّي في
LinkComposerأدّت إلى سلوك غير متسق مقارنةً بـGapComposer، وإعادة احتساب غير متوقّعة للوسيطات التلقائية، وانتهاء المهلة في الاختبارات. (I783dc)
الإصدار 1.12.0-alpha02
6 مايو 2026
تم طرح androidx.compose.runtime:runtime-*:1.12.0-alpha02. يتضمّن الإصدار 1.12.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة تحميل زائد إلى
SideEffectيقبل وسيطات المفتاح. يمكن استخدام واجهة برمجة التطبيقات الجديدة لتفعيلSideEffectsلمرة واحدة بدون الحاجة إلىLaunchedEffectأوDisposableEffectاللذين لم يتم استخدام حظرCoroutineScopeأوonDisposeفيهما. (I528b2، b/476108743)
الإصدار 1.12.0-alpha01
22 أبريل 2026
تم طرح androidx.compose.runtime:runtime-*:1.12.0-alpha01. يتضمّن الإصدار 1.12.0-alpha01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في LinkTable يمكن أن تتسبّب في عمليات عقدة غير صالحة. (I491c3)
- تم تعديل Compose compileSdk إلى الإصدار 37 من واجهة برمجة التطبيقات. وهذا يعني أنّه يجب توفُّر الإصدار 9.2.0 أو إصدار أحدث من "مكوّن Android الإضافي" عند استخدام Compose. (Id45cd، b/413674743)
- تم إصلاح مشكلة التخزين المؤقت في LinkTable حيث يمكن أن تؤدي عمليات إدراج المحتوى التي تؤدي إلى تغيير الحجم إلى قراءة قيم قديمة، ما قد يؤدي إلى عدم حل CompositionLocals. (I8016c)
- تم إصلاح الخطأ الذي كان يتسبّب في عرض
T.writableRecordلعلاماتIllegalStateExceptionغير ضرورية (Ia778f، b/440975176)
الإصدار 1.7 من "تتبُّع وقت التشغيل"
الإصدار 1.7.0-rc01
18 سبتمبر 2024
تم طرح androidx.compose.runtime:runtime-tracing:1.7.0-rc01. يتضمّن الإصدار 1.7.0-rc01 هذه التعديلات.
الإصدار 1.0 من ميزة "تتبُّع وقت التشغيل"
الإصدار 1.0.0-beta01
29 نوفمبر 2023
تم طرح androidx.compose.runtime:runtime-tracing:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.
الإصدار 1.0.0-alpha05
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.compose.runtime:runtime-tracing:1.0.0-alpha05. يتضمّن الإصدار 1.0.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- تم تثبيت الاعتماديات على أدنى الإصدارات الثابتة المتوافقة (مثل compose-runtime وtracing-perfetto)، ما أدّى إلى حلّ مشكلة كانت تتسبّب في إدخال إصدار أحدث من compose-runtime إلى التطبيق.
الإصدار 1.0.0-alpha04
23 أغسطس 2023
تم طرح androidx.compose.runtime:runtime-tracing:1.0.0-alpha04. يتضمّن الإصدار 1.0.0-alpha04 هذه التعديلات.
الميزات الجديدة
- متوافق مع أحدث إصدارات Benchmark وTracing Perfetto، ما يتيح إمكانية تتبُّع عملية إنشاء التطبيق عند تشغيله على البارد، مثلاً في AndroidX Benchmark واستوديو Android (بدءًا من الإصدار التجريبي الثاني من Hedgehog).
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
androidx.tracing.perfetto.Traceإلىandroidx.tracing.perfetto.PerfettoSdkTrace. (I44af8) - جعل واجهات برمجة التطبيقات الخاصة بحزمة تطوير البرامج (SDK) لأداة Tracing Perfetto متوافقة مع
android.os.Trace(I73ba0، b/282199917) - المتطلبات الأساسية لتتبُّع الأخطاء عند بدء تشغيل التطبيق (Iad890)
- تم دمج ملفات واجهة برمجة التطبيقات التجريبية والعامة (I0f2e1 وb/278769092)
الإصدار 1.0.0-alpha02
8 فبراير 2023
تم طرح androidx.compose.runtime:runtime-tracing:1.0.0-alpha02. يتضمّن الإصدار 1.0.0-alpha02 هذه التعديلات.
الميزات الجديدة
- لم يتم إجراء أي تغييرات وظيفية. تحسينات متعدّدة على الأداء في التبعيات النهائية
androidx.tracing:tracing-perfetto*
الإصدار 1.0.0-alpha01
7 أيلول (سبتمبر) 2022
تم طرح androidx.compose.runtime:runtime-tracing:1.0.0-alpha01. يتضمّن الإصدار 1.0.0-alpha01 هذه التعديلات.
الميزات الجديدة
-
androidx.compose.runtime:runtime-tracingهي مكتبة تتيح تتبُّعًا موسّعًا في تطبيق Compose عند توفّر أدوات متوافقة معها (ستتوفّر قريبًا). هذا هو الإصدار الأوّلي 1.0.0-alpha01.
الإصدار 1.11
الإصدار 1.11.4
01 يوليو 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.4. يتضمّن الإصدار 1.11.4 هذه التعديلات.
الإصدار 1.11.3
17 يونيو 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.3. يتضمّن الإصدار 1.11.3 هذه التعديلات.
الإصدار 1.11.2
19 مايو 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.2. يتضمّن الإصدار 1.11.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في نوع بيانات داخلي كان يمكن أن يتسبّب في حدوث خطأ في حالات نادرة مع المحتوى القابل للنقل. (Ic478f، b/507724717)
الإصدار 1.11.1
6 مايو 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.1. يتضمّن الإصدار 1.11.1 هذه التعديلات.
الإصدار 1.11.0
22 أبريل 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.0. يتضمّن الإصدار 1.11.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.10.0:
New Experimental SlotTable
- أعدنا كتابة
SlotTable، وهي بنية البيانات الداخلية التي يستخدمها وقت تشغيل Compose لتتبُّع تسلسل التجميع، وتحديد التغييرات الناتجة عن إعادة التجميع، وتخزين القيم التي تم تذكّرها. تركّز عملية إعادة الكتابة هذه على تحسين أداء إعادة التكوين، ويتم ذلك بشكل أساسي عن طريق استخدام عدد أقل بكثير من عمليات نسخ الذاكرة مقارنةً بمخزن الفجواتSlotTable. يمكن أن تؤدي بعض التغييرات في تسلسل التركيب، مثل إعادة ترتيب قائمة طويلة من العناصر، إلى إعادة التركيب بسرعة تزيد عن ضعف سرعةSlotTableالسابقة. تكون معظم العمليات الأخرى أسرع بنسبة% 10 تقريبًا عند إعادة الإنشاء باستخدام عملية التنفيذ الجديدةSlotTable. يؤثر تنفيذSlotTableالذي يستخدمه وقت التشغيل في جميع طرق Composable ولا يتطلّب إعادة تجميع. يُعد استخدامSlotTableالجديد تغييرًا على مستوى التطبيق، بما في ذلك التبعيات. - لا يزال تنفيذ
SlotTableهذا تجريبيًا ومتوقفًا حاليًا بشكل تلقائي. ويمكن تفعيلها من خلال ضبطComposeRuntimeFlags.isLinkBufferComposerEnabledعلىtrue. في إصدارات التطبيق التي تم تفعيل تصغير حجمها، يُفترض أنّ هذه القيمة هي "خطأ" في ملف proguard-rules.pro التلقائي المتوفّر مع وقت التشغيل. لتفعيلSlotTableالجديد في مرحلة الإنتاج، يجب تغيير هذا الافتراض إلى "صحيح" في ملفproguard-rules.proالخاص بالتطبيق. لمزيد من المعلومات، يُرجى الاطّلاع على المستندات المتعلّقة بـComposeRuntimeFlags.isLinkBufferComposerEnabled.
المتغيرات المحلية للتركيب التلقائي للمضيف
- تمت إضافة
compositionLocalWithHostDefaultOfالذي يسمح بتحديد CompositionLocals التي تعود إلى بيئة الاستضافة (مثل علاماتViewفي Android) لقيمها التلقائية.
مراقبة snapshotFlow أكثر كفاءة باستخدام SnapshotFlowManager
- تم طرح واجهة برمجة التطبيقات
SnapshotFlowManagerلمراقبةsnapshotFlowبشكل أكثر فعالية. تؤدي إعادة استخدامSnapshotFlowManagerنفسه لعدة مثيلات منsnapshotFlowإلى تسجيل عدد أقل من مراقبي تطبيق اللقطات، ما يؤدي إلى تسريع معالجة تحديثات الحالة.
الإصدار 1.11.0-rc01
8 أبريل 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.0-rc01. يتضمّن الإصدار 1.11.0-rc01 هذه التعديلات.
الإصدار 1.11.0-beta02
25 مارس 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.0-beta02. يتضمّن الإصدار 1.11.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة في WASM حيث كانت رموز تجزئة الهوية تعرض دائمًا القيمة 0 (I9d70c)
- تم إصلاح مشكلة قد يتعذّر فيها إبطال حالة مشتقة رئيسية بشكل صحيح عند تغيير التبعيات الخاصة بحالة مشتقة متداخلة (Ia7981 وb/481750019).
- تم إصلاح مشكلة في
LinkTableيمكن أن تتسبب في عمليات كتابة غير صالحة بعد التخلص من تركيبة. (I5c97a) - إصلاح مشكلة في
LinkTableيمكن أن تتسبّب في عمليات كتابة غير صالحة عند تغيير حجم الجدول أثناء عملية نسخ (Ie7edf) - إصلاح مشكلة في
LinkTableتؤدي إلى تعديل القيمة المخزّنة لعقدة (I58a4a) بشكلٍ غير صحيح - يتم الآن ضبط السعة الأولية
LinkTableعلى قيمة أصغر، ما يمنع حدوث أخطاء نفاد الذاكرة عند إنشاء العديد من التركيبات الفرعية على الأجهزة التي تكون أحجام الذاكرة المخصّصة فيها أصغر (I112b9)
الإصدار 1.11.0-beta01
11 مارس 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.0-beta01. يتضمّن الإصدار 1.11.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم الآن وضع علامة "تجريبي" على
SnapshotFlowManagerوsnapshotFlowالتي تقبل المَعلمةmanager(I5c1a5 وb/486077876 وI0de71 وb/486077876)
إصلاح الأخطاء
- إصلاح عُطل "يتم استدعاء Apply على عقدة غير مفعّلة" في التركيب القابل للإيقاف المؤقت (I880c0، b/484300733)
- تم إصلاح مشكلة في
LinkTableكان من المحتمل أن تؤدي إلى تلفArrayIndexOutOfBoundsExceptionsأو البيانات الوصفية عند استخدامMovableContent. (I8452b) - تم إصلاح مشكلة في
LinkTableكانت تمنع ملء بيانات التتبُّع التشخيصية بشكلٍ صحيح (I59868) - تم إصلاح مشكلة في SlotTable الجديدة حيث يمكن أن يؤدي استخدام
RememberObserversفيMovableContentإلى حدوث حلقةOutOfMemoryError/infiniteعند إزالته. (I884e7)
الإصدار 1.11.0-alpha06
25 فبراير 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.0-alpha06. يتضمّن الإصدار 1.11.0-alpha06 هذه التعديلات.
الإصدار 1.11.0-alpha05
11 فبراير 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.0-alpha05. يتضمّن الإصدار 1.11.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة
ComposeRuntimeFlags.isMovingNestedMovableContentEnabled، وهي علامة ميزة وقت التشغيل. (I3ee62، b/455588848) - تم تحويل
HostDefaultKeyمنopen classإلىinterface. يتيح ذلك للمفاتيح تنفيذ آليات بحث متعدّدة (مثلViewTreeHostDefaultKey) بدون أن تكون مقيّدة بالوراثة من فئة واحدة، ما يحسّن إمكانية التوسّع لبيئات الاستضافة المخصّصة. (I917a2) - أصبح
HostDefaultProviderوLocalHostDefaultProviderالآنpublic، ما يسمح لبيئات الاستضافة المخصّصة بتحديد قيم للبيانات المحلية الخاصة بالنظام الأساسي. (I5bdbe)
إصلاح الأخطاء
- تمت إزالة إمكانية حدوث توقّف تام عند تشغيل
snapshotFlows في الوقت نفسه على مؤشّرين ترابط. (Ib4339) - تم إصلاح مشكلة في جدول الروابط قد تتسبّب في أن تستبعد الأدوات العناصر القابلة للإنشاء في التسلسل الهرمي وتربط بشكل غير صحيح التركيبات الفرعية (I7178e).
المساهمة الخارجية
- تم إصلاح الخطأ الإيجابي الزائف في Lint عند استخدام عامل أحادي لتعديل القيمة في كتلة produceState (I1c7c9)
الإصدار 1.11.0-alpha04
28 يناير 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.0-alpha04. يتضمّن الإصدار 1.11.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أعدنا كتابة
SlotTable، وهي بنية البيانات الداخلية التي يستخدمها وقت تشغيل Compose لتتبُّع تسلسل التجميع، وتحديد التغييرات الناتجة عن إعادة التجميع، وتخزين القيم التي تم تذكّرها. تركّز عملية إعادة الكتابة هذه على تحسين أداء إعادة التكوين، ويتم ذلك بشكل أساسي عن طريق استخدام عدد أقل بكثير من عمليات نسخ الذاكرة مقارنةً بمخزن الفجواتSlotTable. يمكن أن تؤدي بعض التغييرات في تسلسل التركيب، مثل إعادة ترتيب قائمة طويلة من العناصر، إلى إعادة التركيب بسرعة تزيد عن ضعف سرعةSlotTableالسابقة. تكون معظم العمليات الأخرى أسرع بنسبة% 10 تقريبًا عند إعادة الإنشاء باستخدام عملية التنفيذ الجديدةSlotTable. يؤثر تنفيذSlotTableالذي يستخدمه وقت التشغيل في جميع طرق Composable ولا يتطلّب إعادة تجميع. يُعد استخدامSlotTableالجديد تغييرًا على مستوى التطبيق، بما في ذلك التبعيات. - هذه الطريقة
SlotTableغير مفعّلة تلقائيًا في الوقت الحالي، ويمكن تفعيلها من خلال ضبطComposeRuntimeFlags.isLinkBufferComposerEnabledعلىtrue. - في إصدارات التطبيق التي تم تفعيل تصغير حجمها، يُفترض أن تكون هذه القيمة
falseفي ملفproguard-rules.proالتلقائي المتوفّر مع وقت التشغيل. لتفعيلSlotTableالجديد في مرحلة الإنتاج، يجب تغيير هذا الافتراض إلىtrueفي ملفproguard-rules.proالخاص بالتطبيق. لمزيد من المعلومات، يُرجى الاطّلاع على المستندات المتعلّقة بـComposeRuntimeFlags.isLinkBufferComposerEnabled. (Ib741d، b/268366116)
الميزات الجديدة
- تمت إضافة
compositionLocalWithHostDefaultOfالتي تسمح بتحديدCompositionLocalsالتي تعود إلى بيئة الاستضافة (مثل علامات Android View) لقيمها التلقائية. (I15b81)
إصلاح الأخطاء
- تم التأكّد من أنّه لا يمكن إعادة عرض مكالمات
Snapshot.sendApplyNotificationsإلا بعد إرسال الإشعارات اللازمة بشأن التطبيق. (I95f20، b/418800424) - منع خفض مستوى تتبُّع تسلسل استدعاء الدوال البرمجية لمعلومات المصدر إلى مفاتيح المجموعة في الحالات التي لا تتوفّر فيها معلومات المصدر في وقت التشغيل (If3712)
- عرِّف عن
ComposeToolingFlags. من المفترض أن تكون هذه العلامات دائمة (على عكسComposeRuntimeFlags) ويتم استخدامها لميزات الأدوات التي لها تأثير كبير على الأداء. (I87863)
المساهمة الخارجية
- واجهة برمجة التطبيقات التجريبية الجديدة
RecomposerInfo#errorState(I0decc) - تغيير
AnnotationRetentionللتعليق التوضيحيFunctionKeyMetaإلى BINARY (I53495)
الإصدار 1.11.0-alpha03
14 يناير 2026
تم طرح androidx.compose.runtime:runtime-*:1.11.0-alpha03. يتضمّن الإصدار 1.11.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقديم الفئة
SnapshotFlowManagerوإضافة المَعلمة الاختياريةSnapshotFlowManagerإلىsnapshotFlow، ما يتيح للمستخدمين إمكانية تحسين عدد مراقبي تطبيق اللقطات الذين يتم تسجيلهم. (I6289b، b/446746211)
إصلاح الأخطاء
- تمت إضافة تعليق توضيحي لتتبُّع عملية إدراج المحتوى القابل للنقل (Ibf176)
الإصدار 1.11.0-alpha02
17 ديسمبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.11.0-alpha02. يتضمّن الإصدار 1.11.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة العلامة
isMovableContentUsageTrackingEnabled(I71e2b، b/427960130)
المساهمة الخارجية
- تم إصلاح الخطأ في ميزة "التعديل المباشر" الذي لا يمكن استرداده من الخطأ. (Ieb34f)
الإصدار 1.11.0-alpha01
3 ديسمبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.11.0-alpha01. يتضمّن الإصدار 1.11.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
RetainedValuesStore.getExitedValueOrDefaultإلىconsumeExitedValueOrDefaultc7a0929 - إزالة واجهة برمجة التطبيقات التجريبية لإعادة الإنشاء المتزامن.(c8af15d)
الإصدار 1.10
الإصدار 1.10.6
25 مارس 2026
تم طرح androidx.compose.runtime:runtime-*:1.10.6. يتضمّن الإصدار 1.10.6 هذه التعديلات.
إصلاح الأخطاء
- إصلاح الخطأ "لا يمكن إيقاف إعادة الاستخدام من الجذر إذا كان السبب مجموعات أخرى" في التركيب القابل للإيقاف المؤقت (I474b5، b/488433633)
- إصلاح عُطل "يتم استدعاء Apply على عقدة غير مفعّلة" في التركيب القابل للإيقاف المؤقت (I880c0، b/484300733)
الإصدار 1.10.5
11 مارس 2026
تم طرح androidx.compose.runtime:runtime-*:1.10.5. يتضمّن الإصدار 1.10.5 هذه التعديلات.
الإصدار 1.10.4
25 فبراير 2026
تم إصدار androidx.compose.runtime:runtime-*:1.10.4 بدون أي تغييرات منذ الإصدار 1.10.3. يتضمّن الإصدار 1.10.4 هذه التعديلات.
الإصدار 1.10.3
11 فبراير 2026
تم طرح androidx.compose.runtime:runtime-*:1.10.3. يتضمّن الإصدار 1.10.3 هذه التعديلات.
الإصدار 1.10.2
28 يناير 2026
تم طرح androidx.compose.runtime:runtime-*:1.10.2. يتضمّن الإصدار 1.10.2 هذه التعديلات.
الإصدار 1.10.1
14 يناير 2026
تم طرح androidx.compose.runtime:runtime-*:1.10.1. يتضمّن الإصدار 1.10.1 هذه التعديلات.
الإصدار 1.10.0
3 ديسمبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.10.0. يتضمّن الإصدار 1.10.0 هذه التعديلات.
الإصدار 1.10.0-rc01
19 نوفمبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.10.0-rc01. يتضمّن الإصدار 1.10.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- الحماية من التعديل المتكرّر عند تسجيل الحالات المشتقة في
SnapshotStateObserver(I7b862، b/435655844، b/456249373، b/402535073) - [Lint] إصلاح خطأ بسيط لجعل أداة رصد المشاكل تحذّر من التعيين المركّب بشكل صحيح. (I08319، b/456775556)
الإصدار 1.10.0-beta02
5 نوفمبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.10.0-beta02. يتضمّن الإصدار 1.10.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
لقد أجرينا العديد من التغييرات غير المتوافقة مع واجهة برمجة التطبيقات لتبسيط عملية تثبيت
RetainedValuesStoreوإدارتها. لن تتأثر المكالمات الحالية إلىretainوRetainedEffect، ولكن أيRetainedValuesStoreمخصّصة ستتطلّب نقل البيانات لتكون متوافقة مع هذا الإصدار. (If3c2f، b/451921682، b/450539803)لم يعُد
RetainedValuesStoreيعرض واجهات برمجة التطبيقات ذات المستوى المنخفض لبدء الاحتفاظ بالبيانات أو إيقافه. تتّبع حالة الاحتفاظ بالمحتوى الآن المحتوى تلقائيًا. يتم الآن عرضLocalRetainedValuesStoreProviderلتثبيتRetainedValuesStore. يجب عدم تقديمLocalRetainedValuesStoreمباشرةً. يُرجى الاطّلاع على المستندات والعينات المعدَّلة للحصول على مزيد من المعلومات حول هذه التغييرات.تم تغيير اسم
RetainedValuesStoreProviderإلىRetainedValuesStoreRegistry. لا يعرض هذا الصف الآن سوى واجهات برمجة التطبيقات لتثبيتRetainedValuesStoreوإدارتها في التركيب.تم استبدال "
ControlledRetainedValuesStore" بـ "ManagedRetainedValuesStore".RetainedValuesStoreهي الآن واجهة.
في السابق، كان تثبيت RetainedValuesStore مخصّص قد يبدو على النحو التالي:
val retainedValuesStore = retainControlledRetainedValuesStore()
if (active) {
CompositionLocalProvider(LocalRetainedValuesStore provides retainedValuesStore) {
content()
}
val composer = currentComposer
DisposableEffect(retainedValuesStore) {
val cancellationHandle =
if (retainedValuesStore.retainExitedValuesRequestsFromSelf > 0) {
composer.scheduleFrameEndCallback {
retainedValuesStore.stopRetainingExitedValues()
}
} else {
null
}
onDispose {
cancellationHandle?.cancel()
retainedValuesStore.startRetainingExitedValues()
}
}
}
من خلال هذه التغييرات في واجهة برمجة التطبيقات، يمكن التعبير عن عملية التثبيت هذه باستخدام الرمز التالي بدلاً من ذلك:
val retainedValuesStore = retainManagedRetainedValuesStore()
if (active) {
LocalRetainedValuesStoreProvider(retainedValuesStore) {
content()
}
}
إصلاح الأخطاء
- نقل عمليات إبطال النطاق في المحتوى القابل للنقل قبل نقل هذا المحتوى خارج جدول الفتحة (I9d123، b/451651649)
الإصدار 1.10.0-beta01
22 أكتوبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.10.0-beta01. يتضمّن الإصدار 1.10.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
RetainedValuesStore.getExitedValueOrDefaultإلىRetainedValuesStore.getExitedValueOrElse(If9653، b/452340613) - تمت إعادة تسمية
isKeepingExitedValuesإلىisRetainingExitedValues(I660bf، b/437095756) - تمت إعادة تسمية "
RetainScope" إلى "RetainedValuesStore". تمت إعادة تسمية "RetainScopeHolder" إلى "RetainedValuesStoreRegistry". تمت إعادة تسمية "RetainScopeHolder.RetainScopeProvider" إلى "RetainedValuesStoreRegistry.ProvideChildRetainedValuesStore". (Idf23a، b/437095756)
إصلاح الأخطاء
- تأخير عملية إعداد
SavedStateفيSaveableStateRegistryإلى حين الاستخدام الأول (Ic0a93)
الإصدار 1.10.0-alpha05
8 أكتوبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.10.0-alpha05. يتضمّن الإصدار 1.10.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- املأ تتبُّع تسلسل استدعاء الدوال البرمجية
DiagnosticComposeExceptionفي وضع الإصدار. (Ib76cb) - تم إصلاح مشكلة في حالة Snapshot، حيث إنّ استخدام سياسة دمج لنوع معيّن قد يؤدي إلى احتساب القيمة السابقة بشكل غير صحيح، ما يؤدي إلى عرض قيمة مستقبلية للحالة بدلاً من القيمة السابقة. سيحدث ذلك إذا كان هناك أكثر من لقطتَي بيانات قابلة للتغيير في انتظار المراجعة، وكانت إحدى القيم التي يتم تطبيقها على الأقل تتضمّن سياسة دمج. (I527b5، b/442791065)
الإصدار 1.10.0-alpha04
24 سبتمبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.10.0-alpha04. يتضمّن الإصدار 1.10.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات
RetainScopeHolderلإدارة مجموعة منRetainScopes. يمكن استخدام هذه السمة لتنفيذ الاحتفاظ بالحاويات ومضيفي التنقّل الذين يتألفون من العديد من العناصر الفرعية التي تختلف مدة الاحتفاظ بها. (I10e0f) - تمت إضافة واجهتَي برمجة التطبيقات
RetainedContentHostوretainControlledRetainScope، اللتين يمكن استخدامهما لإنشاءRetainScopesمُدار تلقائيًا للمحتوى الذي يختفي، مثل الألواح القابلة للطي (If81f6) - تم إيقاف التحميل الزائد المضمّن نهائيًا لـ
Updater#setلأنّه كان يغلّف القيمة المقدَّمة مرات كثيرة جدًا. تمت إضافة تحميل زائد للدالةUpdater#initالتي تأخذ مَعلمة تتجنّب الحاجة إلى تعبير لامدا لالتقاط البيانات. (Id679e) - تضيف هذه السمة
RetainedEffect، وهي واجهة برمجة تطبيقات للتأثيرات الجانبية تشبهDisposableEffectوتتّبع دورة حياة الاحتفاظ بدلاً من دورة حياة التركيب. تم تصميم واجهة برمجة التطبيقات هذه لاستخدامها في التأثيرات المرتبطة بالاحتفاظ بكائن آخر لا ينفّذRetainObserverأو لا يمكنه تنفيذه. (I1c61f، b/177562901) - تم تصحيح مستندات
RetainObserver.onRetainedوإضافةRetainObserver.onUnused، التي تشبهRememberObserver.onAbandoned(Ia6fc5)
إصلاح الأخطاء
- تم إصلاح مشكلة تذكُّر الإرسال بعد المجموعة الأولى في دالة (مثل استدعاء دالة مركّبة) وقبل مجموعة يمكن إزالتها (مثل عبارة
if) يمكنها إرسالonForgottenبترتيب غير صحيح. (I453f6، b/346821372) - تجنَّب اجتياز سياق الروتين الفرعي عند تهيئة
LaunchedEffect. (I8d2c3b)
الإصدار 1.10.0-alpha03
10 سبتمبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.10.0-alpha03. يتضمّن الإصدار 1.10.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتضمّن هذه الإصدارات تتبُّع تسلسل استدعاء الدوال البرمجية المستند إلى مفتاح المجموعة والذي يعمل في التطبيقات المصغّرة. سيتم إنشاء ملف ربط Proguard لهذه التتبُّعات من خلال المكوّن الإضافي Compose Compiler Gradle بدءًا من الإصدار 2.3.0 من Kotlin. يتم إيقاف تتبُّع تسلسل استدعاء الدوال البرمجية هذا تلقائيًا، لذا استخدِم
ComposeStackTraceMode.GroupKeysلتفعيله. (Ifbcb5) - إضافة واجهة:
IdentifiableRecomposeScopeللأدوات (Idd5e0، b/434194620) - تم منع عمليات إبطال غير ضرورية في التركيبات التي تتضمّن
CompositionLocalContext(I3fa21، b/412750209)
إصلاح الأخطاء
- تم توضيح في المستندات والأدوات أنّه يتم أيضًا الاحتفاظ بالمفاتيح التي تم تمريرها للاحتفاظ بها. تجنَّب تمرير المفاتيح للاحتفاظ بها لأنّ ذلك سيؤدي إلى تسرُّب الذاكرة. (Ib553b، b/177562901)
- تم إصلاح مشكلة كانت تحدث عندما يتم استدعاء
resume()لتركيبة متوقّفة مؤقتًا في سلسلة تعليمات مختلفة، إذ قد يحدث تشويش في حالة الإشعارات المعلّقة عندما تحاول سلسلة التعليمات الرئيسية إعادة إنشاء التركيبة القابلة للإيقاف المؤقت للإطار التالي. (Ie5f17، b/442649894) - تسجيل الاستثناءات التي تم رصدها في التركيبة (I47d78، b/432799675، b/436878515، b/359623674، b/400436355)
الإصدار 1.10.0-alpha02
27 أغسطس 2025
تم طرح androidx.compose.runtime:runtime-*:1.10.0-alpha02. يتضمّن الإصدار 1.10.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
@DoNotRetain، ويمكن استخدامها لإضافة تعليقات توضيحية إلى الأنواع التي يجب عدم استخدامها مع واجهة برمجة التطبيقاتretain، ربما لأنّها ستؤدي إلى تسريب الموارد. (Ie5435) - تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Kotlin. (Idb6b5)
إصلاح الأخطاء
- تم إصلاح المحتوى القابل للنقل لاحتساب العمليات بشكل صحيح في Applier عندما يعدّل المحتوى العقدة الجذرية لأحد التركيبات. عند احتساب التغييرات على المحتوى القابل للنقل، قد يظل طلب
up()معلّقًا ولم يتم إرساله إلى أداة التطبيق، ما يؤدي إلى تحديد موضع حالة أداة التطبيق بشكل غير صحيح لأي استخدام لاحق. (I7c583)، (I47b70) - يضع علامة "متوقّف نهائيًا" على
CheckResultلأنّه ليس مخصّصًا للاستخدام. (I32934)
الإصدار 1.10.0-alpha01
13 أغسطس 2025
تم طرح androidx.compose.runtime:runtime-*:1.10.0-alpha01. يتضمّن الإصدار 1.10.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تعرض هذه الصفحة واجهة برمجة التطبيقات retain API. على غرار
rememberSaveable، يمكن أن تحتفظ الدالة retain بالقيم المحفوظة التي تخرج من التسلسل الهرمي للتكوين. لا يتم تسلسل القيم المحتفظ بها، كما أنّ مدة بقائها أقصر من القيم المحفوظة، وتتصرّف بشكل مشابه لـViewModelفي androidx. يمكنك الاطّلاع على المستندات لمزيد من التفاصيل. (Ia3105، b/177562901) - تمت إضافة واجهة برمجة التطبيقات
awaitOrScheduleNextCompositionEnd()التي تُصدر دالة ردّ عند انتهاء Recomposer من إنشاء الإطار الحالي. إذا لم يكن Recomposer بصدد إنشاء إطار حاليًا، سيتم تعليق هذه الواجهة إلى أن تنتهي عملية إنشاء الإطار التالي، وسيتم تحديد موعد لإنشاء إطار جديد. (Ib873c) - إضافة واجهة برمجة تطبيقات لموفّر محلّي للتركيب لا يعرض وحدة (I22521، b/271871288)
- تمت إضافة علامة ميزة،
isMovableContentUsageTrackingEnabled، تتيح تتبُّع استخدام المحتوى القابل للنقل لتجنُّب بعض النفقات العامة عند إنشاء المحتوى في البداية. يتم حاليًا إيقاف علامات الميزات هذه تلقائيًا. (Ia713d)
إصلاح الأخطاء
- إصلاح عُطل في المحتوى القابل للنقل عند نقله بين التركيبات الفرعية (I3fa1e، b/436858107)
- إصلاح خطأ يتعلّق بعدم توفّر جزء من تتبُّع تسلسل استدعاء الدوال البرمجية القابلة للإنشاء عند تضمينها في عدة تركيبات فرعية متداخلة (I98c6f)
- تغيير الحد الأدنى التلقائي لإصدار Android من المستوى 21 لواجهة برمجة التطبيقات إلى المستوى 23 (Ibdfca، b/380448311، b/435705964، b/435705223)
- تم إصلاح مشكلة تداخل عند تعديل الحالة الداخلية لتصميم قابل للإيقاف المؤقت من عدّة سلاسل محادثات. (I03895)
- تعديل مراقب تسجيل التركيب ليتم استدعاؤه قبل التركيب الأولي (I4adca، b/430600932)
- إصلاح خطأ بسيط لجعل
AutoboxingStateValuePropertyDetectorمتوافقًا مع كل من K1 وK2. (Ie81c1)
المساهمة الخارجية
- اجعل العنصر runtime-rxjava2 متعدد المنصات وأضِف JVM كهدف متوافق. (I5409e)
- اجعل العنصر runtime-rxjava3 متعدد المنصات وأضِف JVM كهدف متوافق. (I97e84)
الإصدار 1.9
الإصدار 1.9.5
19 نوفمبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.5. يتضمّن الإصدار 1.9.5 هذه التعديلات.
إصلاح الأخطاء
- نقل عمليات إبطال النطاق في المحتوى القابل للنقل قبل نقل هذا المحتوى خارج جدول الفتحة (I9d123، b/451651649)
الإصدار 1.9.4
22 أكتوبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.4. يتضمّن الإصدار 1.9.4 هذه التعديلات.
الإصدار 1.9.3
8 أكتوبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.3. يتضمّن الإصدار 1.9.3 هذه التعديلات.
الإصدار 1.9.2
24 سبتمبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.2. يتضمّن الإصدار 1.9.2 هذه التعديلات.
الإصدار 1.9.1
10 سبتمبر 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.1. يتضمّن الإصدار 1.9.1 هذه التعديلات.
إصلاح الأخطاء
- تجنَّب إعادة إنشاء مقاطع موسيقية قيد الإنشاء. (Iacb01)
- منع إيقاف نطاقات إعادة الإنشاء مؤقتًا مرتين (I060b2، b/431584881)
الإصدار 1.9.0
13 أغسطس 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.0. يتضمّن الإصدار 1.9.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.8.0
- تتطلّب عمليات فحص Lint التي يتم شحنها مع Compose الآن الإصدار 8.2.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" كحد أدنى. إذا لم تتمكّن من ترقية AGP، يمكنك بدلاً من ذلك ترقية Lint بمفرده باستخدام
android.experimental.lint.version=8.8.2(أو إصدار أحدث) في ملف gradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث. - تم إنشاء مكتبة جديدة للتعليقات التوضيحية في وقت التشغيل. يحتوي هذا العنصر على تعريفات التعليقات التوضيحية بدون الاعتماد على وقت تشغيل Compose، لذا يمكن استخدامه من وحدات غير تابعة لـ Compose.
- تم نقل
@Stableو@Immutableو@StableMarkerإلى runtime-annotation، وذلك للسماح بإضافة تعليقات توضيحية إلى الوحدات غير التابعة لـ Compose - تمت إضافة
@FrequentlyChangingValueو@RememberInCompositionإلى runtime-annotation. تضع@FrequentlyChangingValueعلامة على التعريفات التي يمكن أن تتسبّب في إعادة إنشاء متكرّرة، وتضع@RememberInCompositionعلامة على التعريفات التي يجب تذكُّرها في الإنشاء. وتحذّر عمليات فحص Lint المقابلة من الاستخدام غير الصحيح.
- تم نقل
- سيتوافق
androidx.compose.runtime:runtimeالآن مع أنظمة أساسية إضافية. تمت إضافة دعم لأجهزة الكمبيوتر وiOS والاستهداف الأصلي من مشروع Compose Multiplatform التابع لشركة JetBrains، وسيتم طرحه من خلال Google Maven من الآن فصاعدًا. لن تتأثر أي عناصر أخرى من Compose.
الإصدار 1.9.0-rc01
30 يوليو 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.0-rc01. يتضمّن الإصدار 1.9.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تعديل مراقب تسجيل التركيب ليتم استدعاؤه قبل التركيب الأولي (I4adca، b/430600932)
الإصدار 1.9.0-beta03
16 يوليو 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.0-beta03. يتضمّن الإصدار 1.9.0-beta03 هذه التعديلات.
الإصدار 1.9.0-beta02
2 يوليو 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.0-beta02. يتضمّن الإصدار 1.9.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- تم تقليل مدة بقاء المراجع للقيم في جدول الفتحة بين عمليات الإنشاء. هناك حالات يمكن أن يستمر فيها مرجع في جدول الفتحة لمدة إطار أطول من اللازم. (I49e74، b/418516940)
- إزالة تشويه Kotlin لطُرق إعادة التحميل السريع (Ic56a3، b/426871325)
الإصدار 1.9.0-beta01
18 يونيو 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.0-beta01. يتضمّن الإصدار 1.9.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة تطبيقات للأدوات من أجل تحليل معلومات المصدر التي أضافها برنامج التجميع في Compose. (Iceaf9، b/408492167)
- تنفِّذ
SnapshotStateSetالآنParcelableعلى Android، ويمكن استخدامها كجزء منrememberSaveable { ... }. (I755dd، b/378623803) - تنفِّذ
SnapshotStateListالآنParcelableعلى Android، ويمكن استخدامها الآن كجزء منrememberSaveable { ... }. (Id18be، b/378623803) - تمت الآن إضافة التعليق التوضيحي
@RememberInCompositionإلىmovableContentOf()، ما يتيح لأداة Lint رصد الاستخدامات غير الصحيحة (I2738d). - تم تعديل واجهة برمجة التطبيقات التجريبية الخاصة بمراقبة التركيب للسماح بمراقبة أكثر شمولاً لأسباب إعادة التركيب (I32b6a)
- غيِّر
setDiagnosticStackTraceEnabledإلى تجريبي لاحتساب التطوير المستقبلي لهذه الميزة. (I11db3) - تم إيقاف
currentCompositeKeyHashنهائيًا. يمكنك استخدامcurrentCompositeKeyHashCodeكبديل. تشفّر واجهة برمجة التطبيقات البديلة التجزئة نفسها باستخدام عدد أكبر من البتات، ما يقلّل بشكل كبير من احتمال أن يكون لمجموعتين عشوائيتين غير مرتبطتين في التسلسل الهرمي للتركيب مفتاح التجزئة نفسه. (I4cb6a، b/177562901) - تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP (Idb6b5)
- تم نقل
@Stableو@Immutableو@StableMarkerإلى التعليقات التوضيحية في وقت التشغيل (بطريقة متوافقة). يمكنك الآن الاعتماد على التعليقات التوضيحية في وقت التشغيل إذا كنت تريد استخدام هذه التعليقات التوضيحية من المكتبات التي لا تعتمد على Compose. (I23a16) - تمت إعادة تسمية الحمل الزائد
rememberSaveableالذي يقبلKSerializerإلىrememberSerializable. يوضّح هذا التغيير الاستخدام المقصود له معkotlinx.serialization. يتطلّب توفير فئاتkotlinx.Serializableالعامة مباشرةً فيrememberSaveableمَعلمة من النوعreified، ما سيؤدي إلى عدم توافق رمز المصدر من خلال مطالبة جميع مواقع الاتصال بتوفير معلومات النوع المحدَّد في وقت الترجمة. (Idb875 وI38627 وb/376028110)
إصلاح الأخطاء
- يجب التخلّص من التركيبات التي تم ضبطها باستخدام محتوى قابل للإيقاف المؤقت وتم إلغاؤه. يتم التحقّق من ذلك الآن من خلال التركيب وسيتم عرض خطأ إذا تمت إعادة استخدامه. (I2daa5، b/406792785)
- تم إصلاح مشكلة في الإنشاء القابل للإيقاف المؤقت، إذ لم يعُد يتم إرسال
onForgottenغير صحيح لتذكير المراقبين عند التخلص من الإنشاء القابل للإيقاف المؤقت. يجب إرسال حدث onAbandoned فقط إلىRememberObserversفي تركيبة قابلة للإيقاف المؤقت تم إلغاؤها. (I26f54) - تم إصلاح مشكلة المحتوى القابل للنقل حيث تتم إضافة عمليات الإبطال التي تصل في المراحل المتأخرة من معالجة المحتوى القابل للنقل إلى أداة الإنشاء، ولكن لا يتم تعديل عمليات الإبطال هذه عند نقل المحتوى، ما يؤدي إلى إعادة إنشاء المحتوى في المكان الخطأ. (Icd2fa، b/409439507)
- تم إصلاح مشكلة عدم صلاحية المحتوى القابل للنقل بعد إنشائه ولكن قبل نقله. (I99eac، b/229001114)
- قد يؤدي استدعاء
remove()لمكرّر قائمة تم إنشاؤه بواسطةSnapshotStateListبعد استدعاءprevious()إلى إزالة العنصر الخاطئ من القائمة، ولم يكن مطابقًا لما يفعلهArrayListلتسلسل الاستدعاءات نفسه. (I05ab7، b/417493222) - تم إصلاح مشكلة ترتيب في إرسال
onForgotton، ما كان قد يؤدي، على سبيل المثال، إلى تنفيذonDisposeللتأثيرات التي يمكن التخلص منها بترتيب غير صحيح. (Ic1c91، b/417450712) - إصلاح لإعادة استخدام معالجة الحالة في التركيب القابل للإيقاف المؤقت (Ife96e، b/404058957)
- تم إصلاح مشكلة إعادة استخدام الحالة عند إيقاف أحد العناصر مؤقتًا وإعادة تشغيله، ولكن كان يجب إعادة إنشاء بعض الحالات التي تم إيقافها مؤقتًا لأنّ بعض الحالات التي تمت قراءتها قد تغيّرت أثناء إيقاف العنصر مؤقتًا. (I441d1، b/416209738)
- تم إكمال إصلاح مشكلة إرسال التذكير بشأن التركيب القابل للإيقاف المؤقت b/404058957، حيث كان الإصلاح السابق غير مكتمل. (I1afd4، b/404058957)
- تتجاوز السمة
OffsetApplierالآن السمةapply()بشكل صحيح، والتي تم تقديمها مع ميزة "التركيب القابل للإيقاف المؤقت". قد يؤدي عدم توفّر هذه السمة إلى طرح استثناء عند تعديل العُقد الافتراضية. (Idbf31، b/409291131) - تم إصلاح حالة توقّف تام قد تؤثر في مستخدمي Molecule عند إلغاء مكالمة معلّقة إلى
FrameClock.withFrameNanosأثناء إرسال إطار. (I89cab، b/407027032) - قد يصبح Recomposer غير نشط مع المحتوى القابل للنقل (Ie5416، b/409267170)
- ترتيب
onReuseوonDeactivateالذي يمكن أن ينعكس أثناء إنشاء مقطوعة موسيقية قابلة للإيقاف المؤقت ويتم الآن ضمان حدوثها بترتيبonDeactivate/onReuse. (I996e4، b/404058957) - إصلاح عملية إرسال المراقبين الذين تم تذكّرهم في التركيب القابل للإيقاف المؤقت لتجنُّب إرسال المراقبين الذين تم تذكّرهم أو نسيانهم في عملية التطبيق نفسها (I570b2، b/404645679، b/407931790)
- تم التبديل
LifecycleRegistryإلى الوضع غير الآمن في Compose Multiplatform لإيقاف عمليات التحقّقMainThreadوحلّ مشاكل سلاسل المحادثات. لمزيد من التفاصيل، يمكنك الاطّلاع على CMP-8227. (Icee87)
المساهمة الخارجية
- تم إصلاح خطأ يؤثر في مستخدمي Molecule حيث قد يؤدي استخدام
RecompositionMode.Immediateإلى عدم إعادة التركيب. (I9f3a9، b/419527812) - دوال جلب
PausableCompositionisAppliedوisCancelledالمكشوفة التي تسمح بالتحقّق من حالةPausableComposition(I994aa) - تمت إضافة
AnnotationTarget.FUNCTIONإلى التعليق التوضيحيFunctionKeyMeta. (I08021)
الإصدار 1.9.0-alpha04
4 يونيو 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.0-alpha04. يتضمّن الإصدار 1.9.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تنفِّذ
SnapshotStateSetالآن واجهة Parcelable على Android، ويمكن استخدامها الآن كجزء منrememberSaveable { ... }. (I755dd، b/378623803) - تنفِّذ
SnapshotStateListالآن واجهة Parcelable على Android، ويمكن استخدامها الآن كجزء منrememberSaveable { ... }. (Id18be، b/378623803) - تمت الآن إضافة التعليق التوضيحي
@RememberInCompositionإلىmovableContentOf()، ما يتيح لأداة Lint رصد الاستخدامات غير الصحيحة (I2738d). - تم تعديل واجهة برمجة التطبيقات التجريبية الخاصة بمراقبة التركيب للسماح بمراقبة أكثر شمولاً لأسباب إعادة التركيب (I32b6a)
إصلاح الأخطاء
- تم إصلاح مشكلة ترتيب في إرسال
onForgotton، ما كان قد يؤدي، على سبيل المثال، إلى تنفيذonDisposeللتأثيرات التي يمكن التخلص منها بترتيب غير صحيح. (Ic1c91، b/417450712) - إصلاح لإعادة استخدام معالجة الحالة في التركيب القابل للإيقاف المؤقت (Ife96e، b/404058957)
- إصلاح خطأ بسيط لجعل رصد المجموعات القابلة للتغيير متوافقًا مع كل من K1 وK2 (Ie4878)
- إصلاح خطأ بسيط لجعل البحث عن التعليقات التوضيحية في أدوات الوصول إلى الخصائص التي تم تجاهلها متوافقًا مع K1 وK2 (I9900d)
المساهمة الخارجية
- تم إصلاح خطأ يؤثر في مستخدمي Molecule حيث قد يؤدي استخدام
RecompositionMode.Immediateإلى عدم إعادة التركيب. (I9f3a9، b/419527812) - عرض دوال جلب
PausableCompositionisApplied وisCancelledالتي تتيح التحقّق من حالةPausableComposition(I994aa)
الإصدار 1.9.0-alpha03
20 مايو 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.0-alpha03. يتضمّن الإصدار 1.9.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- غيِّر
setDiagnosticStackTraceEnabledإلى تجريبي لاحتساب التطوير المستقبلي لهذه الميزة. (I11db3)
إصلاح الأخطاء
- تم إصلاح مشكلة إعادة استخدام الحالة عند إيقاف أحد العناصر مؤقتًا وإعادة تشغيله، ولكن كان يجب إعادة إنشاء بعض الحالات التي تم إيقافها مؤقتًا لأنّ بعض الحالات التي تمت قراءتها قد تغيّرت أثناء إيقاف العنصر مؤقتًا. (I441d1، b/416209738)
- تم إكمال إصلاح مشكلة إرسال البيانات في ميزة "التأليف القابل للإيقاف المؤقت"، وذلك بعد أن كان الإصلاح السابق غير مكتمل. (I1afd4، b/404058957)
- توفّر
SaveableStateHolder.SaveableStateProviderالآنLocalSavedStateRegistryOwnerلمحتواها من خلال التركيب. (Ia2761، b/413108878) - يعتمد
androidx.compose.runtime.saveableالآن علىandroidx.lifecycle.runtime.compose. (I53228، b/413108878)
الإصدار 1.9.0-alpha02
7 مايو 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.0-alpha02. يتضمّن الإصدار 1.9.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف السمة
rememberSaveableنهائيًا باستخدام "مفتاح" مخصّص. يتجاوز هذا الإعداد النطاق الموضعي، ما يؤدي إلى حدوث أخطاء في الحالة وسلوك غير متسق (مثل مشاركة الحالة أو فقدانها بدون قصد، ومشاكل فيLazyLayoutsالمتداخلة). يُرجى إزالة المَعلمة "key" لاستخدام النطاق الموضعي من أجل الحصول على حالة متسقة ومحدودة النطاق محليًا. يمكنك الاطّلاع على رسالة الالتزام الكاملة لمزيد من التفاصيل. (I5e6ff، b/357685851)
إصلاح الأخطاء
- تتجاوز السمة
OffsetApplierالآن السمةapply()بشكل صحيح، والتي تم تقديمها مع ميزة "التركيب القابل للإيقاف المؤقت". قد يؤدي عدم توفُّر هذه السمة إلى طرح استثناء عند تعديل العُقد الافتراضية. (Idbf31، b/409291131) - تم إصلاح حالة توقّف تام قد تؤثر في مستخدمي Molecule عند إلغاء مكالمة معلّقة إلى
FrameClock.withFrameNanosأثناء إرسال إطار. (I89cab، b/407027032) - قد يصبح Recomposer غير نشط مع استمرار حالة المحتوى القابل للنقل في انتظار تجاهله. لا يحدث ذلك عادةً لأنّه يتم تجاهل حالة المحتوى القابل للنقل في الحلقة الرئيسية لعملية إعادة التركيب. ومع ذلك، يمكن أن يحدث ذلك في التركيب القابل للإيقاف المؤقت عند تجاهل المحتوى القابل للنقل أثناء
resume()(Ie5416، b/409267170) - ترتيب
onReuseوonDeactivateالذي يمكن أن ينعكس أثناء إنشاء مقطوعة موسيقية قابلة للإيقاف المؤقت ويُضمَن الآن حدوثها بترتيبonDeactivate/onReuse. (I996e4، b/404058957)
الإصدار 1.9.0-alpha01
23 أبريل 2025
تم طرح androidx.compose.runtime:runtime-*:1.9.0-alpha01. يتضمّن الإصدار 1.9.0-alpha01 هذه التعديلات.
التغييرات في السلوك
- تتطلّب عمليات فحص Lint التي يتم شحنها مع Compose الآن الإصدار 8.2.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" كحد أدنى. إذا لم تتمكّن من ترقية "مكوّن Android الإضافي لبرنامج Gradle"، يمكنك بدلاً من ذلك ترقية Lint بمفرده باستخدام
android.experimental.lint.version=8.8.2(أو إصدار أحدث) فيgradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
currentCompositeKeyHashنهائيًا. يمكنك استخدامcurrentCompositeKeyHashCodeكبديل. تشفّر واجهة برمجة التطبيقات البديلة التجزئة نفسها باستخدام عدد أكبر من البتات، ما يقلّل بشكل كبير من احتمال أن يكون لمجموعتين عشوائيتين غير مرتبطتين في التسلسل الهرمي للتركيب مفتاح التجزئة نفسه. (I4cb6a، b/177562901) - تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP (Idb6b5)
- تم نقل
@Stableو@Immutableو@StableMarkerإلى التعليقات التوضيحية في وقت التشغيل (بطريقة متوافقة). يمكنك الآن الاعتماد على التعليقات التوضيحية في وقت التشغيل إذا كنت تريد استخدام هذه التعليقات التوضيحية من المكتبات التي لا تعتمد على Compose. (I23a16) - تزيل هذه السمة
onCreatingوonDisposingلأنّهما أصبحتا قديمتَين وتمت إعادة تسميتهما إلىonPreCreateوonPreDispose. يكمل هذا التغيير عملية إعادة التسمية. (I97461) - عرض عنصر CompositionLocal يتيح إرفاق تتبُّع تسلسل استدعاء الدوال البرمجية في Compose استنادًا إلى موقع عقدة Compose في الإنشاء (Ie0bda، b/354163858)
- تقديم عمليات تتبُّع تسلسل استدعاء الدوال البرمجية لتشخيص أخطاء Compose استنادًا إلى معلومات المصدر المخزَّنة في التركيب (I3db9f، b/354163858)
- إيقاف
runWithTimingDisabledنهائيًا واستخدامrunWithMeasurementDisabledبدلاً منه، لأنّه يصف السلوك بشكلٍ أوضح، أي أنّه يتم إيقاف جميع المقاييس مؤقتًا. بالإضافة إلى ذلك، يجب عرض الفئة الرئيسيةMicrobenchmarkScopeلأنّه لا يمكن إعادة تعريف الدالةrunWithMeasurementDisabledلفتح الوصول، لأنّها مضمّنة. (I9e23b، b/389149423، b/149979716) - تضيف
@FrequentlyChangingValue: وهي تعليق توضيحي يمكنه وضع علامة على الدوال وعمليات الحصول على القيم للإشارة إلى أنّه يجب عدم طلبها مباشرةً داخل التركيب، لأنّ ذلك قد يؤدي إلى عمليات إعادة تركيب متكررة. على سبيل المثال، لوضع علامة على قيم موضع التمرير وقيم الرسوم المتحركة. يتم تقديم التحذيرات من خلال عملية فحص مطابقة. (I83630، b/234042500) - تضيف
@RememberInComposition: وهي تعليق توضيحي يمكنه وضع علامة على الدوال الإنشائية والدوال وعمليات جلب الخصائص للإشارة إلى أنّه يجب عدم طلبها مباشرةً داخل التركيب بدون تذكّرها. سيتم عرض الأخطاء من خلال عملية تدقيق lint ذات الصلة. يمكن استخدام هذه التعليق التوضيحي لوضع علامة على التصريحات التي تعرض كائنات قابلة للتغيير أو تتضمّن حالة، أو كائنات من المهم الحفاظ على هويتها في جميع عمليات الإنشاء، أو كائنات يصعب إنشاء مثيل لها ويجب تخزينها مؤقتًا في جميع عمليات الإنشاء. (Ie7db0) - تمت إضافة عملية تحميل زائدة جديدة
rememberSaveableتتوافق معKSerializerلإتاحة استمرار الحالة الآمنة من حيث النوع باستخدام KotlinX Serialization. ستبقى واجهة برمجة التطبيقات الحالية المستندة إلىSaverمتاحة. (Iea4ab، b/376028110)
إصلاح الأخطاء
- إصلاح عملية إرسال المراقبين الذين تم تذكّرهم في التركيب القابل للإيقاف المؤقت لتجنُّب إرسال المراقبين الذين تم تذكّرهم أو نسيانهم في عملية التطبيق نفسها (I570b2، b/404645679، b/407931790)
- تمت إعادة تسمية الطريقتَين
SnapshotObserverوonDisposingإلىonPreCreateوonPreDisposeعلى التوالي في onCreating لتتوافقا مع إرشادات واجهة برمجة التطبيقات. تم إيقاف الطرق السابقة نهائيًا، وتستدعي الطرق الجديدة الطرق القديمة تلقائيًا، لذا ستستمر عمليات التنفيذ الحالية لهذه الواجهة في العمل إلى أن تتم إزالة الطرق. ستتم إزالة هذه الطرق في الإصدار 1.9.0 alpha في قائمة تغييرات لاحقة ستصدر بعد هذه القائمة بوقت قصير. ستتم إزالتها من الإصدار التجريبي 1.8 قبل الإصدار الثابت 1.8. (I6d753) - تم إصلاح مشكلة عدم تذكُّر القيم المحفوظة بشكل صحيح وإعادة احتسابها عند إعادة إنشاء مجموعة محذوفة تظهر بعد مجموعة قابلة للنقل (I62cab، b/383769314)
- إضافة دعم لتتبُّع تسلسل استدعاء الدوال البرمجية في
LaunchedEffectوrememberCoroutineScope(I705c0، b/354163858) - تتطلّب عمليات التحقّق من أخطاء Compose البرمجية الآن الإصدار 8.8.2 على الأقل من "مكوّن Android الإضافي لنظام Gradle" من سطر الأوامر، والإصدار Ladybug على الأقل من "استوديو Android" للاستفادة من ميزات بيئة التطوير المتكاملة. إذا كنت تستخدم إصدارًا قديمًا من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"، يمكنك ضبط
android.experimental.lint.version=8.8.2في ملف gradle.properties لترقية إصدار Lint بدون التأثير في "المكوّن الإضافي لنظام Gradle المتوافق مع Android". (I6f2a8)
المساهمة الخارجية
- تمت إضافة
AnnotationTarget.FUNCTIONإلى التعليق التوضيحيFunctionKeyMeta. (I08021)
الإصدار 1.8
الإصدار 1.8.3
18 يونيو 2025
تم طرح androidx.compose.runtime:runtime-*:1.8.3. يتضمّن الإصدار 1.8.3 هذه التعديلات.
الإصدار 1.8.2
20 مايو 2025
تم طرح androidx.compose.runtime:runtime-*:1.8.2. يتضمّن الإصدار 1.8.2 هذه التعديلات.
الإصدار 1.8.1
7 مايو 2025
تم طرح androidx.compose.runtime:runtime-*:1.8.1. يتضمّن الإصدار 1.8.1 هذه التعديلات.
الإصدار 1.8.0
23 أبريل 2025
تم طرح androidx.compose.runtime:runtime-*:1.8.0. يتضمّن الإصدار 1.8.0 هذه التعديلات.
الإصدار 1.8.0-rc03
9 أبريل 2025
تم طرح androidx.compose.runtime:runtime-*:1.8.0-rc03. يتضمّن الإصدار 1.8.0-rc03 هذه التعديلات.
الإصدار 1.8.0-rc02
26 مارس 2025
تم طرح androidx.compose.runtime:runtime-*:1.8.0-rc02. يتضمّن الإصدار 1.8.0-rc02 هذه التعديلات.
الإصدار 1.8.0-rc01
12 مارس 2025
تم طرح androidx.compose.runtime:runtime-*:1.8.0-rc01. يتضمّن الإصدار 1.8.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية الطريقتَين
SnapshotObserverوonDisposingإلىonPreCreateوonPreDisposeعلى التوالي في onCreating لتتوافقا مع إرشادات واجهة برمجة التطبيقات. تم إيقاف الطرق السابقة نهائيًا، وتستدعي الطرق الجديدة الطرق القديمة تلقائيًا، لذا ستستمر عمليات التنفيذ الحالية لهذه الواجهة في العمل إلى أن تتم إزالة الطرق. ستتم إزالة هذه الطرق في الإصدار 1.9.0 alpha في قائمة تغييرات لاحقة ستصدر بعد هذه القائمة بوقت قصير. ستتم إزالتها من الإصدار التجريبي 1.8 قبل الإصدار الثابت 1.8. (I6d753)
الإصدار 1.8.0-beta03
26 فبراير 2025
تم طرح androidx.compose.runtime:runtime-*:1.8.0-beta03. يتضمّن الإصدار 1.8.0-beta03 هذه التعديلات.
الإصدار 1.8.0-beta02
12 فبراير 2025
تم طرح androidx.compose.runtime:runtime-*:1.8.0-beta02. يتضمّن الإصدار 1.8.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- إعادة طرح الاستثناء الذي تم رصده في التركيبة القابلة للإيقاف المؤقت (384486d)
الإصدار 1.8.0-beta01
29 يناير 2025
تم طرح androidx.compose.runtime:runtime-*:1.8.0-beta01. يتضمّن الإصدار 1.8.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح مشكلة قد يؤدي فيها طرح عنصر قابل للطرح أثناء الإنشاء لا يمتد من Exception إلى حدوث الخطأ "لم يتم تطبيق الإنشاء المعلق". (I356be، b/382094412)
الإصدار 1.8.0-alpha08
15 يناير 2025
تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha08. يتضمّن الإصدار 1.8.0-alpha08 هذه التعديلات.
الإصدار 1.8.0-alpha07
11 ديسمبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha07. يتضمّن الإصدار 1.8.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة تطبيقات للأدوات تساعد "أداة فحص التنسيق" في ربط التركيبات الفرعية بالتركيب الأصلي في الحالات التي لا يتم فيها استخدام عقدة لربط التركيبات معًا. (I4ce3d)
- تمت إتاحة الثوابت الحسابية والخاصة في
SnapshotIdداخليًا بدلاً من إتاحتها للجميع. يمكن إجراء عمليات حسابية علىSnasphotId، إذا لزم الأمر، عن طريق تحويله إلىIntأوLongباستخدامtoInt()أوtoLong()على التوالي. (Ic3a57)
المساهمة الخارجية
- تحسين مساحة التخزين لمَعلمات
movableContentOf(ed87177)
الإصدار 1.8.0-alpha06
13 نوفمبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha06. يتضمّن الإصدار 1.8.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تغييرات في واجهة برمجة التطبيقات
PausableCompositionتتضمّن هذه التغييرات غير المتوافقة إصدارات سابقة من 1.8.0-alpha (منذ 1.8.0-alpha02)، ولكن بما أنّ هذه واجهات برمجة تطبيقات جديدة في الإصدار 1.8.0، لا يتم الحفاظ على التوافق مع الإصدارات القديمة لأنّ واجهات برمجة التطبيقات لا تزال في مرحلة الإصدار الأولي. (I39819) - تضيف واجهات برمجة تطبيقات الأدوات لمراقبة إنشاء تركيبات جديدة ضمن أداة Recomposer (Iaeb7e)
- تمت إضافة
snapshotIdمن النوعLongإلىSnapshotوإيقافidنهائيًا. تم تغيير رقم تعريف اللقطة منIntإلىLongلتجنُّب تجاوز رقم تعريف اللقطة على الأنظمة التي تتضمّن معدلات لقطات عالية جدًا ورسومًا متحركة طويلة الأمد. تم ضبط النوع على "متوقّع/فعلي" للسماح بأن يكون هذا النوعIntأو نوعًا آخر على المنصات التي لا يتوفّر فيها نوعLongأصلي. في المنصات التي لا تتضمّنLongأصليًا، مثل JavaScript، يجب تجنُّب معدّلات اللقطات العالية (أكثر من 1000 لقطة في الثانية) التي قد تتسبّب في حدوث تجاوز للسعةIntكل 24 يومًا تقريبًا. (I38ac3، b/374821679)
إصلاح الأخطاء
providesDefaultثابتة لـprovidesواحد (aosp/3318540 b/374263387)- تحسين
ChangeList(3318538)
الإصدار 1.8.0-alpha05
30 أكتوبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha05. يتضمّن الإصدار 1.8.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- إصلاح خطأ تجاوز سعة التخزين المؤقت عند إضافة
Int.MAX_VALUEإلىSnapshotIdSet(b/370536104، Ic4179f6) - التحسينات الصغيرة في وقت التشغيل (I50c60)
- السماح لأداة R8 بإزالة طلبات runtimeCheck الخاصة بتصحيح الأخطاء (I8c44)
- جعل
compoundKeyOfتكرارية بدلاً من تكرارية عودية (I5817f)
المساهمة الخارجية
- تنفيذ الحزم باستخدام قوائم المجموعات (I7d47c)
الإصدار 1.8.0-alpha04
16 أكتوبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha04. يتضمّن الإصدار 1.8.0-alpha04 هذه التعديلات.
تحسينات على الأداء
- توفير معرّف اللقطة لسجلات الحالة في الدالة الإنشائية (85c00f)
- إعادة هيكلة
SnapshotState***لتجنُّب أخطاء التحقّق من الفئة (6ee4a6) - إصلاح قواعد R8 لمنع تضمين عمليات طرح الاستثناءات (5beb92)
- تحسين العمليات بشكل دقيق (d73c5c)
- تحسين عمليات تخصيص
SynchronizedObjectعلى JVM (2b043f)
الإصدار 1.8.0-alpha03
2 أكتوبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha03. يتضمّن الإصدار 1.8.0-alpha03 هذه التعديلات.
تحسينات على الأداء
- إنشاء سياق فرعي بشكل كسول لـ
rememberCoroutineScope(f61464)- يُستخدَم
rememberCoroutineScopeعادةً لتشغيل الروتينات الفرعية استجابةً للأحداث التي تحدث بعد الإنشاء. في بعض السيناريوهات، قد لا تحدث هذه الأحداث مطلقًا، ما يؤدي إلى تكاليف إضافية لإنشاء المهام وإلغائها بدون أي فائدة. - اجعل النطاق الذي تعرضه الدالة
rememberCoroutineScopeينشئcoroutineContextبشكل غير مباشر عند الوصول إليه، ما يؤدي إلى تجنُّب إنشاء المهام وإلغائها تمامًا إذا لم يتم استخدام النطاق مطلقًا.
- يُستخدَم
الإصدار 1.8.0-alpha02
18 سبتمبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha02. يتضمّن الإصدار 1.8.0-alpha02 هذه التعديلات.
الميزات الجديدة
- تمت إضافة
PausableCompositionالتي تتيح إنشاء تركيبة فرعية يمكن إيقافها مؤقتًا أثناء التركيب وتطبيقها بشكل غير متزامن على التركيبة. يجب توفّر دعم من المترجم اللغوي لإيقاف التنفيذ مؤقتًا، وهي ميزة قيد التطوير حاليًا. (I3394b)
الإصدار 1.8.0-alpha01
4 سبتمبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha01. يتضمّن الإصدار 1.8.0-alpha01 هذه التعديلات.
الإصدار 1.7
الإصدار 1.7.8
12 فبراير 2025
تم طرح androidx.compose.runtime:runtime-*:1.7.8. يتضمّن الإصدار 1.7.8 هذه التعديلات.
الإصدار 1.7.7
29 يناير 2025
تم طرح androidx.compose.runtime:runtime-*:1.7.7. ما مِن تغييرات مقارنةً بالإصدار 1.7.6.
تم طرح androidx.compose.runtime:runtime-*:1.7.6. يتضمّن الإصدار 1.7.6 هذه التعديلات.
الإصدار 1.7.5
30 أكتوبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.5. يتضمّن الإصدار 1.7.5 هذه التعديلات.
الإصدار 1.7.4
16 أكتوبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.4. يتضمّن الإصدار 1.7.4 هذه التعديلات.
الإصدار 1.7.3
2 أكتوبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.3. يتضمّن الإصدار 1.7.3 هذه التعديلات.
الإصدار 1.7.2
18 سبتمبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.2. يتضمّن الإصدار 1.7.2 هذه التعديلات.
الإصدار 1.7.1
10 سبتمبر 2024
- لم يتم إجراء أي تغييرات على عناصر Android. تمت إزالة
-desktopمن العناصر وإضافة-jvmStubsو-linuxx64Stubsمن العناصر. لا يُفترض استخدام أي من هذه الأهداف، بل هي عناصر نائبة للمساعدة في جهود Jetbrains Compose.
الإصدار 1.7.0
4 سبتمبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0. يتضمّن الإصدار 1.7.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.6.0
- تمت إضافة إمكانية توفير تركيبة محلية يتم احتسابها استنادًا إلى قيم التركيبات المحلية الأخرى إما تلقائيًا باستخدام
compositionLocalWithComputedDefault()أو من خلال توفير تعبير لامدا لاستخدامه في احتساب القيمة باستخدامprovidesComputedبدلاً منprovides. - يمكن الحصول على قيمة CompositionLocal باستخدام السمة
currentValueالخاصة بـ CompositionLocal التي يمكن الوصول إليها من داخل دالة lambda التي تحتسب القيمة. يتم استخدام هذا الرمز بدلاً منcurrentالذي لا يمكن الوصول إليه إلا في دوال@Composable. (Iadbc0) - يمكن الوصول إلى عناصر الحالة التي تم إنشاؤها حديثًا على الفور من اللقطات الأخرى، بما في ذلك اللقطة العامة، مع حالتها الأولية. لن تظهر أي تعديلات لاحقة إلى أن يتم تطبيق اللقطة التي تم إنشاء العنصر فيها.
- الحالة الأولية لـ
mutableStateOf()، بالإضافة إلى إصداراتها الأساسية، هي القيمة التي تم تمريرها كمَعلمة إلىmutableStateOf(). الحالة الأولية لكل منmutableStateListOf()وmutableStateMapOf()فارغة. - تمت إضافة
Snapshot.isInSnapshotوSnapshot.PreexistingSnapshotIdاللذين يُستخدمان لإتاحة إمكانية الوصول إلى عنصر الحالة على الفور من اللقطة العامة عند إنشائه. - يمكن أن تتيح عناصر الحالة المخصّصة إمكانية الوصول إليها على الفور باتّباع نمط التغييرات التي تم إجراؤها على عناصر اللقطة المضمّنة. (I84a17)
- فعِّل
nonSkippingGroupOptimizationلمكتبات الإنشاء. يؤدي ذلك إلى أن يصبح الرمز البرمجي الذي تم إنشاؤه لجميع الدوال القابلة للإنشاء غير القابلة لإعادة التشغيل في androidx أكثر كفاءة. ونخطّط لإتاحة هذه الميزة تلقائيًا في المستقبل. I(acbc08) - إبطال صلاحية دوال lambda القابلة للإنشاء في التركيبات الفرعية في الإطار نفسه (98301c)
- يجب استدعاء
onReleaseرد الاتصال بالترتيب نفسه الذي تم به استدعاءonForgotten. (2cd790) - تفعيل وضع التخطّي السريع (ed1766)
- جعل
currentCompoundHashKeyفريدًا في المزيد من الحالات (d4a872)
الإصدار 1.7.0-rc01
21 أغسطس 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-rc01. يتضمّن الإصدار 1.7.0-rc01 هذه التعديلات.
الإصدار 1.7.0-beta07
7 أغسطس 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta07. يتضمّن الإصدار 1.7.0-beta07 هذه التعديلات.
الإصدار 1.7.0-beta06
24 يوليو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta06. يتضمّن الإصدار 1.7.0-beta06 هذه التعديلات.
الإصدار 1.7.0-beta05
10 يوليو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta05. يتضمّن الإصدار 1.7.0-beta05 هذه التعديلات.
الإصدار 1.7.0-beta04
26 يونيو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta04. يتضمّن الإصدار 1.7.0-beta04 هذه التعديلات.
الإصدار 1.7.0-beta03
12 يونيو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta03. يتضمّن الإصدار 1.7.0-beta03 هذه التعديلات.
الإصدار 1.7.0-beta02
29 مايو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta02. يتضمّن الإصدار 1.7.0-beta02 هذه التعديلات.
الإصدار 1.7.0-beta01
14 مايو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta01. يتضمّن الإصدار 1.7.0-beta01 هذه التعديلات.
الإصدار 1.7.0-alpha08
1 مايو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha08. يتضمّن الإصدار 1.7.0-alpha08 هذه التعديلات.
الإصدار 1.7.0-alpha07
17 أبريل 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha07. يتضمّن الإصدار 1.7.0-alpha07 هذه التعديلات.
الميزات الجديدة
- تمت إضافة إمكانية توفير تركيبة محلية يتم احتسابها استنادًا إلى قيم التركيبات المحلية الأخرى إما تلقائيًا باستخدام
compositionLocalWithComputedDefault()أو من خلال توفير تعبير لامدا لاستخدامه في احتساب القيمة باستخدامprovidesComputedبدلاً منprovides. - يمكن الحصول على قيمة CompositionLocal باستخدام السمة
currentValueالخاصة بـ CompositionLocal التي يمكن الوصول إليها من داخل دالة lambda التي تحتسب القيمة. يتم استخدام هذا الرمز بدلاً منcurrentالذي لا يمكن الوصول إليه إلا في دوال@Composable. (Iadbc0)
تغييرات واجهة برمجة التطبيقات
- يمكن الوصول إلى عناصر الحالة التي تم إنشاؤها حديثًا على الفور من اللقطات الأخرى، بما في ذلك اللقطة العامة، مع حالتها الأولية. لن تظهر أي تعديلات لاحقة إلى أن يتم تطبيق اللقطة التي تم إنشاء العنصر فيها.
- الحالة الأولية لـ
mutableStateOf()، بالإضافة إلى إصداراتها الأساسية، هي القيمة التي تم تمريرها كمَعلمة إلىmutableStateOf(). الحالة الأولية لكل منmutableStateListOf()وmutableStateMapOf()فارغة. - تمت إضافة
Snapshot.isInSnapshotوSnapshot.PreexistingSnapshotIdاللذين يُستخدمان لإتاحة إمكانية الوصول إلى عنصر الحالة على الفور من اللقطة العامة عند إنشائه. - يمكن أن تتيح عناصر الحالة المخصّصة إمكانية الوصول إليها على الفور باتّباع نمط التغييرات التي تم إجراؤها على عناصر اللقطة المضمّنة. (I84a17)
إصلاح الأخطاء
- تم إصلاح عملية دمج
readObserverفي اللقطات المتداخلة. وقد أدّى ذلك إلى عدم إبطال صحة الحالات المشتقة المتداخلة بشكل كافٍ عند استخدامها داخلsnapshotFlow. (Idf138)
الإصدار 1.7.0-alpha06
3 أبريل 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha06. يتضمّن الإصدار 1.7.0-alpha06 هذه التعديلات.
إصلاح الأخطاء
- إصلاح معالجة القيم الفردية
providesDefault(538f45) - تجنُّب حدوث توقّف تام في Recomposer عند الوصول إلى ساعة عرض اللقطات (07e5c6)
الإصدار 1.7.0-alpha05
20 مارس 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha05. يتضمّن الإصدار 1.7.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- محو التغييرات المتأخرة في التركيبة غير النشطة (5950bc)
الإصدار 1.7.0-alpha04
6 آذار (مارس) 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha04. يتضمّن الإصدار 1.7.0-alpha04 هذه التعديلات.
تحسينات على الأداء
- استدعاء
Snapshot.currentمرة واحدة لكل تقييم حالة مشتقة (ee7daf) - قراءة
currentRecordمرة واحدة لكل ملاحظة في التركيب (b882b2) - إزالة عملية تخصيص مكرّرة غير مقصودة في
snapshotFlow(231e56) - فعِّل
nonSkippingGroupOptimizationلمكتبات الإنشاء. يؤدي ذلك إلى أن يصبح الرمز البرمجي الذي تم إنشاؤه لجميع الدوال القابلة للإنشاء غير القابلة لإعادة التشغيل في androidx أكثر كفاءة. ونخطّط لإتاحة هذه الميزة تلقائيًا في المستقبل. I(acbc08)
الإصدار 1.7.0-alpha03
21 فبراير 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha03. يتضمّن الإصدار 1.7.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة ميزة استبدال المجموعات لتحسين رصد التغييرات (0941b5)
تحسينات على الأداء
- تحسين تخصيص الذاكرة عند رصد التغييرات (53e7fd)
- إصلاح تسرب الذاكرة في أداة الإنشاء (0e097d)
- استخدام
ScopeMapلتمرير عمليات الإبطال عند إعادة الإنشاء (e19a7e) - تحسين خريطة عمليات إبطال الصلاحية للاحتفاظ بالحالات المشتقة فقط (f11c44)
- استبدال استخدامات
IdentityArraySetبـScatterSet(db572e) - تحسين
removeScopeفيScopeMap(bb0530)
الإصدار 1.7.0-alpha02
7 فبراير 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha02. يتضمّن الإصدار 1.7.0-alpha02 هذه التعديلات.
إصلاح الأخطاء
- إبطال صلاحية دوال lambda القابلة للإنشاء في التركيبات الفرعية في الإطار نفسه (98301c)
- يجب استدعاء
onReleaseرد الاتصال بالترتيب نفسه الذي تم به استدعاءonForgotten. (2cd790) - حالات تغيير الفلتر التي لم يتم رصدها في
snapshotFlow(796b80)
تحسينات على الأداء
- تعديل مراقب اللقطة في المكان عندما يكون شفافًا (f60f30)
- تحسين
SnapshotIdSet.lowest()(7ae149) - استخدام
fold()بدون تخصيص فيSnapshotIdSet(532b7d) - إزالة تخصيص المكرّر (83f96b)
الإصدار 1.7.0-alpha01
24 يناير 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha01. يتضمّن الإصدار 1.7.0-alpha01 هذه التعديلات.
تحسينات الأداء
- إضافة إمكانية إنشاء خانات بعد إضافة مجموعة فرعية (b5960c)
- تحسين تعديلات التسجيل لحالات اللقطات (28c3fe)
- تفعيل وضع التخطّي السريع (ed1766)
إصلاح الأخطاء
- حساب بيانات وصفية للمَعلمات التلقائية في ميزة "تذكُّر" المضمّنة (096665)
- جعل
currentCompoundHashKeyفريدًا في المزيد من الحالات (d4a872) - إدراك المجموعات عند الخروج من استدعاء الدالة المضمّنة (2a90fc)
الإصدار 1.6
الإصدار 1.6.8
12 يونيو 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.8. يتضمّن الإصدار 1.6.8 هذه التعديلات.
الإصدار 1.6.7
1 مايو 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.7. يتضمّن الإصدار 1.6.7 هذه التعديلات.
الإصدار 1.6.6
17 أبريل 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.6. لم يتم إجراء أي تغييرات منذ الإصدار الأخير.
الإصدار 1.6.5
3 أبريل 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.5. يتضمّن الإصدار 1.6.5 هذه التعديلات.
الإصدار 1.6.4
20 مارس 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.4. يتضمّن الإصدار 1.6.4 هذه التعديلات.
الإصدار 1.6.3
6 آذار (مارس) 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.3. يتضمّن الإصدار 1.6.3 هذه التعديلات.
الإصدار 1.6.2
21 فبراير 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.2. يتضمّن الإصدار 1.6.2 هذه التعديلات.
الإصدار 1.6.1
7 فبراير 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.1. يتضمّن الإصدار 1.6.1 هذه التعديلات.
إصلاح الأخطاء
- يجب استدعاء
onReleaseرد الاتصال بالترتيب نفسه الذي تم به استدعاءonForgotten. (2cd790) - حالات تغيير الفلتر التي لم يتم رصدها في
snapshotFlow(796b80)
الإصدار 1.6.0
24 يناير 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.0. يتضمّن الإصدار 1.6.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.5.0
الميزات الجديدة
- إعادة طرح الاستثناءات التي يتم تجاهلها أثناء حلقة إعادة التكوين (4dff9a)
تحسينات الأداء
- تحسين تعديلات التسجيل لحالات اللقطات (28c3fe)
- تحسين
rememberSaveable(f01d79) - تأجيل إعادة قراءة الحالات المشتقة إلى حين تسجيل التغييرات (f38099)
- تحسين توفير القيم المحلية للتكوين (a337ea)
إصلاح الأخطاء
- إصلاح مشكلة تسريب الذاكرة في جدول الخانات (73fcfe)
- تخطّي إعادة إنشاء الأغاني الفرعية التي ستتم إزالتها (Ieeb99، b/254645321)
- لا يتم تشغيل دورات حياة
RememberObserverإلا عند تخزينها في عملية حساب Remember. (f6b4dc) - يجب حصر عملية الالتقاط
$dirtyعلى تعبيرات lambda المضمّنة. (acfca0) - إصلاح مشكلة تلقّي المحتوى القابل للنقل أحيانًا لبيانات محلية غير صحيحة (035cd6)
الإصدار 1.6.0-rc01
10 يناير 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.0-rc01. يتضمّن الإصدار 1.6.0-rc01 هذه التعديلات.
الإصدار 1.6.0-beta03
13 ديسمبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-beta03. يتضمّن الإصدار 1.6.0-beta03 هذه التعديلات.
الإصدار 1.6.0-beta02
29 نوفمبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-beta02. يتضمّن الإصدار 1.6.0-beta02 هذه التعديلات.
الإصدار 1.6.0-beta01
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-beta01. يتضمّن الإصدار 1.6.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- نشر قيم ثبات معيّنة في التعليق التوضيحي (274a4c)
إصلاح الأخطاء
- استخدِم سياسة مرجعية لحالة النطاق المحلي للتركيب في السياق. (83361c)
- يجب حصر عملية التقاط $dirty في تعبيرات lambda المضمّنة. (acfca0)
- إصلاح مشكلة تلقّي المحتوى القابل للنقل أحيانًا لبيانات محلية غير صحيحة (035cd6)
- استخدام خرائط تجزئة أسرع لا تتطلّب تخصيصًا في
RecomposeScopeImpl(d79494) - يمكنك استخدام
ObjectIntMapفيDerivedState. (21862e) - استخدِم
IntRefللعدد الصحيحSnapshotThreadLocalفيDerivedState. (04eaf4)
الإصدار 1.6.0-alpha08
18 أكتوبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha08. يتضمّن الإصدار 1.6.0-alpha08 هذه التعديلات.
إصلاح الأخطاء
- لا يتم تشغيل دورات حياة
RememberObserverإلا عند تخزينها في عملية حساب Remember. (f6b4dc) - تحسين عمليات التخصيص في ترتيب قائمة عمليات الإبطال (954d63)
- استخدِم الخرائط الجديدة غير المخصّصة في
SnapshotStateObserver. (4303ce) - محو عمليات الإبطال عند إيقاف التجميع (e001be)
الإصدار 1.6.0-alpha07
4 أكتوبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha07. يتضمّن الإصدار 1.6.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم الآن وضع علامة
SnapshotStateListعلىRandomAccessلتفعيل استخدام إصدار الفهرسة المباشرة من أدوات المساعدة في القوائم. (I5210c، b/219554654)
الإصدار 1.6.0-alpha06
20 سبتمبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha06. يتضمّن الإصدار 1.6.0-alpha06 هذه التعديلات.
الإصدار 1.6.0-alpha05
6 سبتمبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha05. يتضمّن الإصدار 1.6.0-alpha05 هذه التعديلات.
الإصدار 1.6.0-alpha04
23 أغسطس 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha04. يتضمّن الإصدار 1.6.0-alpha04 هذه التعديلات.
الميزات الجديدة
- إعادة طرح الاستثناءات التي يتم تجاهلها أثناء حلقة إعادة التكوين (4dff9a)
تغييرات واجهة برمجة التطبيقات
- أضفنا طريقة لإيقاف
ReusableComposition، ما يؤدي إلى إزالة الملاحظات مع إبقاء العُقد في مكانها. يمكن إعادة تفعيل التجميع الذي تم إيقافه من خلال استدعاءsetContent. (Ib7f31) - إضافة واجهة
ReusableCompositionلإدارة مراحل نشاط التركيبات الفرعية وإعادة استخدامها (I812d1، b/252846775)
الإصدار 1.6.0-alpha03
9 أغسطس 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha03. يتضمّن الإصدار 1.6.0-alpha03 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة التحسين الجديد
CompositionLocalProvider(3118e88) - تصحيح طريقة تفكيك عُقد المحتوى القابلة للنقل (5e3d59b)
الإصدار 1.6.0-alpha02
26 تموز (يوليو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha02. يتضمّن الإصدار 1.6.0-alpha02 هذه التعديلات.
الميزات الجديدة والتحسينات على الأداء
- تحسين
rememberSaveable(f01d79) - تأجيل إعادة قراءة الحالات المشتقة إلى حين تسجيل التغييرات (f38099)
- تحسين توفير القيم المحلية للتكوين (a337ea)
- يتم وضع علامة
@ExplicitGroupsComposableعلىSideEffectلتجنُّب إنشاء مجموعة. (I74815) - تجنُّب مقارنة الخرائط المحلية للتركيب عند إعادة الاستخدام (782071)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة تحميل زائد لحالة خاصة إلى
CompositionLocalProvidersيتجنّب النفقات العامة المستخدَمة لتوفير قيم متعددة بشكل أسرع، ولكنّه يمثّل نفقات عامة عند توفير قيمة واحدة. (I6d640، b/288169379)
إصلاح الأخطاء
- إصلاح مشكلة تسريب الذاكرة في جدول الفتحات (73fcfe)
- إصلاح طريقة استعادة
rememberSaveableعندما تعرضstateSaverالقيمة null (90748c)
الإصدار 1.6.0-alpha01
21 حزيران (يونيو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha01. يتضمّن الإصدار 1.6.0-alpha01 هذه التعديلات.
إصلاح الأخطاء
- تخطّي إعادة إنشاء الأغاني الفرعية التي ستتم إزالتها (Ieeb99، b/254645321)
- تقليل عمليات التخصيص عند تطبيق اللقطات (I65c09)
- تجنُّب احتساب
readableHashفيDerivedStateإذا لم يتم تعديل اللقطة (68c565)
الإصدار 1.5
الإصدار 1.5.4
18 أكتوبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.4. يتضمّن الإصدار 1.5.4 هذه التعديلات.
الإصدار 1.5.3
4 أكتوبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.3. يتضمّن الإصدار 1.5.3 هذه التعديلات.
الإصدار 1.5.2
27 سبتمبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.2. يتضمّن الإصدار 1.5.2 هذه التعديلات.
الإصدار 1.5.1
6 سبتمبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.1. يتضمّن الإصدار 1.5.1 هذه التعديلات.
الإصدار 1.5.0
9 أغسطس 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0. يتضمّن الإصدار 1.5.0 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة عمليات التخصيص في إعادة التركيب، والصور المتحركة للألوان، و
AndroidComposeView. (Ib2bfa) - تمت إضافة تعليق توضيحي
@StateFactoryMarkerلوضع علامة على الدوال التي تنشئ حالات ويجب تضمينها في طلبremember. (I64550) - إضافة إصدارات أولية من State و
MutableState(fb3d89) - تمت إضافة
Snapshot.isApplyObserverNotificationPending(I672a5) - تمت إضافة إصدارات أولية من واجهة برمجة التطبيقات
State، ما يسمح بتتبُّع قيم Int وLong وFloat وDouble في عناصرStateبدون تكبُّد عقوبات بسبب التحويل التلقائي بين النوعين الأساسي والخاص بالكائن. استخدِم طرق الإنشاء الجديدةmutableIntState(Int)وmutableFloatStateOf(Float)وما إلى ذلك للاستفادة من هذه الميزات. (I48e43)
إصلاح الأخطاء
- تخطّي إعادة إنشاء الأغاني الفرعية التي ستتم إزالتها (Ieeb99، b/254645321)
- عدم الاحتفاظ بمرجع اللقطة في
ComposerImpl(0206f7) - عدم تطبيق التركيب مرتين (f5791b)
- ضمان إبطال قيم الحالة المشتقة غير المهيأة (aa2a92)
- استدعاء
onEndChangesأثناء التخلص من التركيب (62cc8c) - إصلاح مشكلة نقل المحتوى إلى تركيبة فرعية (4beb41)
- إصلاح حالات التعطّل المحتملة (c1a425 و8edce0)
- لن يحظر الآن أداة إعادة الإنشاء التي تم إنشاؤها لنافذة Android سوى طلبات
withFrameNanosبدلاً من جميع عمليات الإنشاء عند تلقّي إشعار ON_STOP. وهذا يعني أنّ النوافذ المرتبطة بالأنشطة المتوقّفة ستستمر في إعادة الإنشاء عند حدوث تغييرات في البيانات، ولكن سيتم حظر الرسوم المتحركة أو أيّ برنامج آخر يستدعيwithFrameNanos. (Id9e7f، b/240975572) - تنفيذ عمليات معاودة الاتصال لإيقاف التفعيل في
LayoutNodeقبل التخلص من التأثيرات 3784073 - إصلاح العلامات المتغيرة لعمليات إعادة تشغيل lambdas ea81df9
- إصلاح مشكلة تراجع التعديل المباشر في Composable مع العُقد 73fd4d8
- يجب أن يؤدي ON_STOP إلى إيقاف عمليات بث ساعة اللقطات مؤقتًا بدلاً من إنشاء ae276f1
- إبطال نطاقات
SnapshotStateObserverللحالات المشتقة غير المتغيرة 84d9b1c - إصلاح مشكلة الإغلاق التام المحتمل عند التخلص من التركيبات 28761fc
- حلّ مشكلة نقل المحتوى إلى تركيبة فرعية 92d4156
- إصلاح العلامات المتغيرة لعمليات إعادة تشغيل دوال Lambda (8a03e9)
- تنفيذ عمليات رد الاتصال لإيقاف التفعيل في
LayoutNodeقبل التخلص من التأثيرات (8b0fa4) - إصلاح
endToMarker()عند إنهاء مجموعات العُقد (d71d980) - استخدام مجموعة
SlotWriterالحالية للتحقّق من إيقاف التفعيل (a0b518b) - إزالة
fillفيSlotTable.moveSlotGapTo()ونقلها إلى الإغلاق (81f9935) - إصلاح مشكلة عدم توفّر عمليات إبطال الصلاحية أثناء نقل المحتوى القابل للنقل (1d7c024)
- إصلاح عمليات الإبطال الفوري للمحتوى القابل للنقل الذي تم نقله (8676618)
تحسينات على الأداء
- تجنَّب احتساب
readableHashفيDerivedStateإذا لم يتم تعديل اللقطة. (307102) - تخفيض المخصصات (I65c09 وd7ea77 و727974 و445808 )
- إلغاء سريع لعملية الإنشاء
CoroutineScopes(a55362 وbd382f) - استبدال سجلّات عناصر الحالة بسجلّات حالة لا يمكن الوصول إليها (c986960)
- استخدام أداة إنشاء النطاق الصحيح عند إنشاء المجموعات (9a5e5b6)
- استخدام
IdentityArraySetلتخزين عمليات إبطال صلاحية اللقطات (7f60cca) - تقليل عمليات التخصيص للملاحظات السريعة (5bc535f)
الإصدار 1.5.0-rc01
26 تموز (يوليو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-rc01. يتضمّن الإصدار 1.5.0-rc01 هذه التعديلات.
إصلاح الأخطاء
تأجيل إعادة قراءة الحالات المشتقة إلى حين تسجيل التغييرات (f38099)
يتوفّر فحص اختياري لاقتراح نقل طلبات
mutableStateOf()إلى أنواعها المتخصّصة المقابلة للعناصر الأساسية. رقم تعريف أداة Lint هوAutoboxingStateCreation. في السابق، كان يتم تفعيل عملية الفحص هذه تلقائيًا لجميع المشاريع. لعرض هذا التحذير في محرّر "استوديو Android" وفي نواتج Lint الخاصة بمشروعك، غيِّر مستوى خطورته من "معلومات" إلى "تحذير" (أو أعلى) من خلال تعريفwarning "AutoboxingStateCreation"داخل إعدادات build.gradle أو build.gradle.kts الخاصة بالوحدة كما هو موضّح (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
الإصدار 1.5.0-beta03
28 حزيران (يونيو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-beta03. يتضمّن الإصدار 1.5.0-beta03 هذه التعديلات.
إصلاح الأخطاء
- تخطّي إعادة إنشاء الأغاني الفرعية التي ستتم إزالتها (Ieeb99، b/254645321)
الإصدار 1.5.0-beta02
7 يونيو 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-beta02. يتضمّن الإصدار 1.5.0-beta02 هذه التعديلات.
تحسينات على الأداء
- تجنَّب احتساب
readableHashفيDerivedStateإذا لم يتم تعديل اللقطة. (307102)
الإصدار 1.5.0-beta01
24 مايو 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-beta01. يتضمّن الإصدار 1.5.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إزالة عمليات التخصيص في إعادة التركيب والصور المتحركة للألوان و
AndroidComposeView(Ib2bfa) - تمت إضافة تعليق توضيحي
@StateFactoryMarkerلوضع علامة على الدوال التي تنشئ حالات ويجب تضمينها في طلبremember. (I64550) - إضافة إصدارات أولية من State و
MutableState(fb3d89) - تمت إضافة
Snapshot.isApplyObserverNotificationPending(I672a5)
إصلاح الأخطاء
- تخفيض المخصصات (I65c09 وd7ea77 و727974 و445808 )
- عدم الاحتفاظ بمرجع اللقطة في
ComposerImpl(0206f7) - إلغاء سريع لعملية الإنشاء
CoroutineScopes(a55362 وbd382f) - عدم تطبيق التركيب مرتين (f5791b)
- ضمان إبطال قيم الحالة المشتقة غير المهيأة (aa2a92)
- استدعاء
onEndChangesأثناء التخلص من التركيب (62cc8c) - إصلاح مشكلة نقل المحتوى إلى تركيبة فرعية (4beb41)
- إصلاح حالات التعطّل المحتملة (c1a425
- يجب أن يؤدي ON_STOP إلى إيقاف عمليات بث ساعة عرض اللقطات مؤقتًا بدلاً من إيقاف التركيب (f4a2d1)
- إصلاح العلامات المتغيرة لعمليات إعادة تشغيل lambdas (8a03e9)
- تنفيذ عمليات رد الاتصال لإيقاف التفعيل في
LayoutNodeقبل التخلص من التأثيرات (8b0fa4)
المساهمة الخارجية
- تمت إضافة
Snapshot.isApplyObserverNotificationPending(I672a5)
الإصدار 1.5.0-alpha04
10 مايو 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-alpha04. يتضمّن الإصدار 1.5.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إصدارات أساسية من واجهة برمجة التطبيقات
State، ما يسمح بتتبُّع قيم Int وLong وFloat وDouble في عناصرStateبدون فرض عقوبات على التحويل التلقائي بين الأنواع. استخدِم طرق الإنشاء الجديدةmutableIntState(Int)وmutableFloatStateOf(Float)وما إلى ذلك للاستفادة من هذه الميزات. (I48e43)
إصلاح الأخطاء
استدعاء
onEndChangesأثناء التخلص من التركيب تتم إعادة ضبط التركيز على العُقد التي تمت إزالتها أثناءComposition.disposeوالتي تشترك فيonEndChanges.(03d4a47)ضمان إبطال قيم الحالة المشتقة غير المهيأة ترتبط كل حالة مشتقة بقائمة من الاعتماديات في
SnapshotStateObserver، تُستخدَم لإبطال النطاقات المرتبطة بالحالة المشتقة كلما تغيّرت الاعتمادية. يتم تسجيل تغيير الاعتمادية عند تقدّم اللقطة، ويمكن أن يحدث ذلك بعد قراءة الحالة المشتقة (بسبب استدعاءSnapshot.notifyObjectsInitialized()).كانت آلية مراقبة الحالة المشتقة السابقة في
SnapshotStateObserverتعمل على إزالة التبعيات القديمة، ثم قراءة القيمة الجديدة. أدّى ذلك إلى حدوث حالة تعارض مع الإبطال في حالة تم تنظيفها، حيث لم يتم تسجيل إبطال التبعية.يعيد هذا التغيير ترتيب قراءة الحالة المشتقة وتنظيف التبعيات، ما يضمن حدوث الإبطال دائمًا في حالة صالحة. (c472be6)
الإصدار 1.5.0-alpha03
19 أبريل 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-alpha03. يتضمّن الإصدار 1.5.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- لن يحظر أداة إعادة التركيب التي تم إنشاؤها لنافذة Android الآن سوى طلبات
withFrameNanosبدلاً من كل التركيب عند تلقّي إشعار ON_STOP. وهذا يعني أنّ النوافذ المرتبطة بالأنشطة المتوقّفة ستستمر في إعادة الإنشاء عند حدوث تغييرات في البيانات، ولكن سيتم حظر الرسوم المتحركة أو أيّ برنامج آخر يستدعيwithFrameNanos. (Id9e7f، b/240975572)
إصلاح الأخطاء
- إصلاح مشكلة محتملة في التوقف التام في قائمة اللقطات والخريطة 5c1a425
- تنفيذ عمليات معاودة الاتصال لإيقاف التفعيل في
LayoutNodeقبل التخلص من التأثيرات 3784073 - إصلاح العلامات المتغيرة لعمليات إعادة تشغيل lambdas ea81df9
- إصلاح مشكلة تراجع التعديل المباشر في Composable مع العُقد 73fd4d8
- يجب أن يؤدي ON_STOP إلى إيقاف عمليات بث ساعة عرض اللقطات مؤقتًا بدلاً من إيقاف اللقطة ae276f1
- إبطال نطاقات
SnapshotStateObserverللحالات المشتقة غير المتغيرة 84d9b1c - إصلاح مشكلة الإغلاق التام المحتمل عند التخلص من التركيبات 28761fc
- حلّ مشكلة نقل المحتوى إلى تركيبة فرعية 92d4156
الإصدار 1.5.0-alpha02
5 أبريل 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-alpha02. يتضمّن الإصدار 1.5.0-alpha02 هذه التعديلات.
الميزات الجديدة
- يمكن الآن إنشاء
getValueفي Kotlin (f174f6e)
إصلاح الأخطاء وتحسينات في الأداء
- استبدال سجلّات عناصر الحالة بسجلّات حالة لا يمكن الوصول إليها (c986960)
- استخدام أداة إنشاء النطاق الصحيح عند إنشاء المجموعات (9a5e5b6)
- إصلاح
endToMarker()عند إنهاء مجموعات العُقد (d71d980) - استخدام مجموعة
SlotWriterالحالية للتحقّق من إيقاف التفعيل (a0b518b) - استخدام
IdentityArraySetلتخزين عمليات إبطال صلاحية اللقطات (7f60cca) - إزالة
fillفيSlotTable.moveSlotGapTo()ونقلها إلى الإغلاق (81f9935) - إصلاح مشكلة عدم توفّر عمليات إبطال الصلاحية أثناء نقل المحتوى القابل للنقل (1d7c024)
- إصلاح عمليات الإبطال الفوري للمحتوى القابل للنقل الذي تم نقله (8676618)
- تقليل عمليات التخصيص للملاحظات السريعة (5bc535f)
الإصدار 1.5.0-alpha01
22 مارس 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-alpha01. يتضمّن الإصدار 1.5.0-alpha01 هذه التعديلات.
الميزات الجديدة
- إضافة
Modifier.Node#coroutineScopeللسماح لـModifier.Nodesبتشغيل الروتينات المشتركة (I76ef9) - السماح لـ "
Modifier.Nodes" بقراءة "CompositionLocals" من خلال تنفيذ واجهةCompositionLocalConsumerModifierNode(Ib44df)
الإصدار 1.4
الإصدار 1.4.3
3 مايو 2023
تم إصدار androidx.compose.runtime:runtime-*:1.4.3 بدون أي تغييرات.
الإصدار 1.4.2
19 أبريل 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.2. يتضمّن الإصدار 1.4.2 هذه التعديلات.
إصلاح الأخطاء
إصلاح مشكلة توقف تام محتملة في قائمة اللقطات والخريطة 2eb6570
قد تحدث حالة توقّف تام عند إضافة محتوى إلى
SnapshotStateListأوSnapshotStateMapإذا كان التعديل متزامنًا مع كتابة مباشرة إلى سجلّ الحالة. أصبح من المرجّح بشكل كبير مواجهة هذا الخطأ مع التغييرات التي تمّ تقديمها من خلال 93fcae828b والتي تستخدم عمليات كتابة مباشرة لإصدار السجلات غير المستخدَمة.يتم ترتيب عمليات القفل الآن بحيث لا تتم محاولة أخذ لقطة شاشة عند قفل الخريطة أو القائمة.
الإصدار 1.4.1
5 أبريل 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.1. يتضمّن الإصدار 1.4.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح الخطأ
endToMarker()عند إنهاء مجموعات العُقد. d71d980
الإصدار 1.4.0
22 مارس 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.0. يتضمّن الإصدار 1.4.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.3.0
- استخدام القيمة الأولية من
LiveDataللتركيب الأول 3680e25 - أضِف
ComposeNodeLifecycleCallbackلمراقبة مراحل نشاط عقد Compose. 8b6a258 - إضافة السمة
parameterTypesإلىComposableMethod7b6c7ad
إصلاح الأخطاء وتحسينات على الأداء
- محو كل من فهارس النطاق في
SnapshotStateObserver29f4a3e - إضافة المجموعات المطلوبة في نص دوال lambda غير القابلة للتخطّي 7d06752
- تحسين خصائص مرجع الذاكرة لحالة Snapshot 93fcae8
- إزالة التحويل إلى النوع الأساسي في عمليات البحث المحلية في التركيب 0875717
- استخدام المفتاح الصحيح لمجموعات العُقد غير القابلة لإعادة الاستخدام 6388d8d
- حماية
SnapshotStateObserverمن عمليات التطبيق المتكرّرة والمتزامنة 98cb6ba - تمت إضافة عملية التحقّق من حدود الفهرس في طريقة
IdentityArraySet"get" 35a77d3 - تحديث وحدة الإنشاء لاستخدام إضافات
ViewTreeLifecycleOwner21c2122 - إرسال إشعارات التطبيق بعد أن ينتهي Recomposer من إنشاء اللقطة 98f2641
- إصلاح عُطل "الفهرس خارج الحدود" عند إلغاء Recomposer 8f8656f
- فرض إعادة الإنشاء دائمًا في حال تغيير موفّري Composition الرئيسيين 9526fcc
- Recomposer tolerance for cancelled Jobs a55f7ed
- تحسين معالجة عمليات الإبطال لعدد كبير من العناصر المركّبة 9b7ed67
- إصلاح مشكلة إنشاء مجموعات إغلاق لعمليات الإرجاع غير المحلية b6f590c
الإصدار 1.4.0-rc01
8 مارس 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.0-rc01. يتضمّن الإصدار 1.4.0-rc01 هذه التعديلات.
إصلاح الأخطاء
الإصدار 1.4.0-beta02
22 فبراير 2023
تم طرح androidx.compose.runtime:runtime:1.4.0-beta02 وandroidx.compose.runtime:runtime-saveable:1.4.0-beta02. يتضمّن الإصدار 1.4.0-beta02 هذه التعديلات.
الإصدار 1.4.0-beta01
8 فبراير 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.0-beta01. يتضمّن الإصدار 1.4.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
ComposeNodeLifecycleCallbackالتي تتيح مراقبة مراحل نشاط عُقد Compose (I3731b) - تمت إضافة
@TestOnlyإلىComposer.disableSourceInformation()لأنّ هذه الدالة لا يمكن استدعاؤها بأمان إلا في اختبار. (I896c8)
إصلاح الأخطاء
- إزالة التعبئة في عمليات البحث المحلية عن العناصر القابلة للإنشاء (62f66a)
- تحسين خصائص مرجع الذاكرة لحالة Snapshot (dfb451)
الإصدار 1.4.0-alpha05
25 يناير 2023
تم طرح androidx.compose.runtime:runtime:1.4.0-alpha05 وandroidx.compose.runtime:runtime-saveable:1.4.0-alpha05. يتضمّن الإصدار 1.4.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- المزيد من أنواع/إمكانية قبول القيم الفارغة للدوال المضمّنة/المخفية المتوقّفة نهائيًا (I24f91)
الإصدار 1.4.0-alpha04
11 يناير 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.0-alpha04. يتضمّن الإصدار 1.4.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تستخدم
TestMonotonicFrameClockالآن التعليق التوضيحي التجريبي الصحيح. (I95c9e)
إصلاح الأخطاء
- منع تطبيق
SnapshotStateObserverبشكل متكرر ومتزامن (d902fb)
الإصدار 1.4.0-alpha03
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.compose.runtime:runtime-*:1.4.0-alpha03. يتضمّن الإصدار 1.4.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة طريقة عامة جديدة إلى الفئة
ComposableMethodمشابهة للطريقةjava.lang.reflect.Method#getParameterTypes()(Iab0c3)
إصلاح الأخطاء
- يتم الآن إرسال إشعارات تطبيق اللقطة بعد أن ينتهي
Recomposerمن تطبيق التغييرات. (Iad6c0، b/222093277)
الإصدار 1.4.0-alpha02
9 نوفمبر 2022
تم طرح androidx.compose.runtime:runtime-*:1.4.0-alpha02. يتضمّن الإصدار 1.4.0-alpha02 هذه التعديلات.
الإصدار 1.4.0-alpha01
24 أكتوبر 2022
تم طرح androidx.compose.runtime:runtime-*:1.4.0-alpha01. يتضمّن الإصدار 1.4.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتضمّن
SnapshotStateListوSnapshotStateMapالآن عمليات تنفيذ صريحة للسمتَينtoList()وtoMap()على التوالي. تعرض هذه الطرق محتواها الحالي بدون إجراء نسخة، لأنّها تعرض البيانات الداخلية غير القابلة للتغيير المستخدَمة لتخزين محتواها. يمكن استخدام هذه القيمة، على سبيل المثال، لإنشاء سلسلة من القيم باستخدامsnapshotFlowبدون الحاجة إلى نسخ البيانات. (Ica2bd)
الإصدار 1.3
الإصدار 1.3.3
11 يناير 2023
تم طرح androidx.compose.runtime:runtime-*:1.3.3. يتضمّن الإصدار 1.3.3 هذه التعديلات.
- لم يتم إجراء أي تغييرات منذ الإصدار 1.3.2
الإصدار 1.3.2
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.2. يتضمّن الإصدار 1.3.2 هذه التعديلات.
إصلاح الأخطاء
- تم التعديل ليتوافق مع الإصدار 1.3.2 من androidx.compose.ui
الإصدار 1.3.1
9 نوفمبر 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.1. يتضمّن الإصدار 1.3.1 هذه التعديلات.
الإصدار 1.3.0
24 أكتوبر 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0. يتضمّن الإصدار 1.3.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.2.0
التعامل مع الاستثناءات / دعم التعديل في الوقت الفعلي
- من أجل توفير دعم أفضل لميزة "التعديل المباشر"، تمت إضافة واجهات برمجة تطبيقات لإتاحة معالجة الاستثناءات أثناء الإنشاء.
- التعامل مع أخطاء التركيب في ميزة "إعادة التحميل السريع"
- التعامل مع أخطاء التعديل المباشر عند الحفظ أو الاستعادة
تتبُّع التركيبة
- تمت إضافة واجهات برمجة تطبيقات لتتبُّع وقت التشغيل من أجل توفير أدوات جديدة لتتبُّع الإنشاء.
- إنشاء طلبات بدء/انتهاء أحداث التتبُّع القابلة للإنشاء
- إعادة إضافة ComposerKt.traceEventStart(Int, String)
واجهات برمجة التطبيقات القابلة للإنشاء باستخدام Reflection
- تمت إضافة واجهة برمجة تطبيقات
ComposableMethodجديدة للسماح باستدعاءات أكثر موثوقية تستند إلى الانعكاس لواجهات برمجة التطبيقات القابلة للإنشاء. - نقل invokeComposable إلى وقت تشغيل Compose
- إعادة تصميم واجهة برمجة التطبيقات لاستدعاء دالة مركّبة
إصلاحات وقت التشغيل
- إصلاح اختبار النطاق الخاطئ للتحقّق من علامات في جدول الفواصل الإعلانية
- السماح بنقل المحتوى القابل للنقل إلى داخل وخارج SubcomposeLayout
- إصلاح مشكلة نقل المحتوى إلى محتوى جديد في تركيبة فرعية
نظام اللقطات
- أجرينا تحسينات مختلفة على نظام اللقطات تتعلّق بإدارة الذاكرة والأداء والصحة.
- تحسين عملية إزالة النطاق في SnapshotStateObserver
- إلغاء اللقطات المتداخلة التي تم إنشاؤها من لقطات شفافة
- تم إصلاح مشكلة حالة السباق عند قراءة الحالة من اللقطة العامة
- إتاحة استخدام DerivedState في SnapshotStateObserver
- منع إزالة الحالة المشتقة من التركيب عند قراءتها في نطاقات أخرى
- استخدام IdentityArrayMap بدلاً من HashMap داخل DerivedState
- تعديل مراقبي الحالة المشتقة لاستخدام متّجه قابل للتغيير
- تعديل عملية تنظيف حالة SnapshotStateObserver
- استبدال SnapshotStateObserver.invalidated بـ ArraySet
- تم إصلاح مشكلة حالة السباق عند قراءة الحالة من اللقطة العامة
- إصلاح استخدام سجلّ قديم في عملية حساب قيمة التجزئة DerivedState
- إصلاح مشكلة حالة التزامن عند تقديم اللقطة العامة
- تسريع عملية تنظيف عمليات مراقبة النطاق في SnapshotStateObserver
الإصدار 1.3.0-rc01
5 أكتوبر 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح
ArrayIndexOutOfBoundsExceptionالواردة من جدول مواضع الإعلانات (b/249076084)
الإصدار 1.3.0-beta03
21 سبتمبر 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-beta03. يتضمّن الإصدار 1.3.0-beta03 هذه التعديلات.
تغيير في السلوك قد يؤدي إلى أعطال
- تم تغيير المَعلمة إلى
rememberوrememberCoroutineScopeلتصبحcrossinline. سيؤدي ذلك إلى تسجيل خطأ في عمليات الإرجاع المبكر بدلاً من السماح بعملية إرجاع مبكر، ما سيؤدي إلى تسجيل خطأ داخلي لاحقًا. - يمكن أن يؤدي هذا التغيير إلى ظهور أخطاء جديدة في المترجم تتطلّب إزالة عمليات الإرجاع غير المحلية من دوال lambda التي تم تمريرها إلى هذه الدوال. (Ibea62)
الإصدار 1.3.0-beta02
7 أيلول (سبتمبر) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- واجهة برمجة التطبيقات المعدَّلة (I64ca0)
الإصدار 1.3.0-beta01
24 أغسطس 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة
findإلىCompositionDataللسماح لأدوات المطوّرين التي تستخدم واجهة برمجة التطبيقات هذه بالعثور بسرعة على مجموعة فرعية من التركيب باستخدام هويتها. (I5794f)
الإصدار 1.3.0-alpha03
10 أغسطس 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-alpha03. يتضمّن الإصدار 1.3.0-alpha03 هذه التعديلات.
الإصدار 1.3.0-alpha02
27 يوليو 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-alpha02. يتضمّن الإصدار 1.3.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إعادة إضافة
ComposerKt.traceEventStart(Int, String)لضمان التوافق مع الإصدارات القديمة (I6e6de)
الإصدار 1.3.0-alpha01
29 يونيو 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- نقل وظائف الأداة إلى وقت التشغيل (I4f729)
الإصدار 1.2
الإصدار 1.2.1
10 أغسطس 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.1. يتضمّن الإصدار 1.2.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة تسريب الذاكرة: التخلّص من اللقطات المتداخلة التي تم إنشاؤها من لقطات شفافة b/239603305
الإصدار 1.2.0
27 يوليو 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.
التغييرات المهمة منذ 1.1.0
تضمّن الإصدار 1.2.0 من Compose Runtime عددًا من الميزات، بالإضافة إلى العديد من إصلاحات الأخطاء التي تساهم في استقرار الأداء. كانت أهم ميزة جديدة هي تقديم واجهة برمجة التطبيقات
movableContentOfAPI التي يمكن استخدامها لتفعيل تجربة مستخدم معقّدة، مثل عمليات الانتقال بين العناصر المشتركة. تحوّل واجهة برمجة التطبيقاتmovableContentOfدالة lambda قابلة للإنشاء إلى دالة lambda تنقل حالتها والعُقد المقابلة إلى أي موقع جديد يتم استدعاؤها فيه. عندما تغادر المكالمة السابقة التركيب، يتم الاحتفاظ بالحالة مؤقتًا، وإذا دخلت مكالمة جديدة إلى التركيب، يتم نقل الحالة والعُقد المرتبطة بها إلى موقع المكالمة الجديدة. في حال عدم إضافة مكالمة جديدة، ستتم إزالة الحالة نهائيًا وسيتم إشعار المراقبين المسجّلين.إذا تم استدعاء دالة
movableContentOflambda عدة مرات في التركيبة نفسها، يتم إنشاء حالة وعُقد جديدة لكل عملية استدعاء، وعندما تغادر عمليات الاستدعاء التركيبة وتدخل عمليات استدعاء جديدة، يتم نقل الحالة من عمليات الاستدعاء الأولى التي تغادر إلى عمليات الاستدعاء التي تدخل بالترتيب الذي يتم استدعاؤها به. تتم إزالة جميع الحالات التي لم تتم المطالبة بها من خلال المكالمات الجديدة نهائيًا.بالإضافة إلى ذلك وبعض الميزات الجديدة الأخرى، تم تخصيص الكثير من الوقت لتحقيق الاستقرار في وقت التشغيل ونظام حالة Snapshot. تمت إزالة العديد من أخطاء تسريب الذاكرة وتحسين مسارات الرموز البرمجية.
يمكنك الاطّلاع أدناه على قائمة ملخّصة بالتغييرات:
الميزات الجديدة في 1.2
- إضافة لقطة تجريبية غير آمنة للدخول/الخروج
- إضافة واجهة برمجة التطبيقات التجريبية Add Snapshot.asContextElement
- إضافة دالة Snapshot.withoutReadObservation
- السماح بنقل الحالة داخل عنصر مركب
- تتبُّع عمليات إعادة التلحين في Compose
الأداء في 1.2
- تحسين الأداء المحلي للتركيب
- يجب استخلاص ملفات Baseline الشخصية الخاصة بـ Compose باستخدام مقاييس الأداء
إصلاح الأخطاء في 1.2
- إزالة معلومات التتبُّع من نطاقات إعادة إنشاء الإصدار
- منع إزالة الحالة المشتقة من التركيب عند قراءتها في نطاقات أخرى
- استخدام removeScope() أكثر فعالية في SnapshotStateObserver
- إزالة التبعيات غير الضرورية للحالة المشتقة في التركيب
- إصلاح مشكلة تغيُّر currentCompositeKeyHash بعد إعادة التركيب الداخلي داخل المحتوى القابل للنقل
- تنظيف التركيبات غير الصالحة أثناء التخلص منها
- إصلاح قراءة حالة الاشتقاق أثناء إعادة التركيب
- إصلاح مشكلة تسريب الذاكرة عند مراقبة عناصر الحالة المشتقة
- تم إصلاح مفتاح التجزئة المركّب movableContent ليكون متسقًا
- إصلاح مشكلة تؤدي إلى تعطُّل أداة الإنشاء
- التأكّد من أنّ الإبطال الإجباري لمجموعة يؤدي إلى إعادة التركيب
- إصلاح الخطأ الذي يحدث عند استعادة rememberSaveable مع إدخال بترتيب غير صحيح
الإصدار 1.2.0-rc03
29 يونيو 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-rc03. يتضمّن الإصدار 1.2.0-rc03 هذه التعديلات.
إصلاح الأخطاء
- في السابق، كانت تتم إزالة ملاحظات الحالة المشتقة بشكل غير مشروط من نطاق إعادة الإنشاء والتكوين معًا، ما أدّى إلى تعطيل النطاقات الأخرى التي قد تظل تراقب الحالة المشتقة. لا يزيل هذا التغيير مثيلات الحالة المشتقة إلا إذا لم تعد تستخدمها نطاقات أخرى. (b/236618362)
الإصدار 1.2.0-rc02
22 يونيو 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-rc02. يتضمّن الإصدار 1.2.0-rc02 هذه التعديلات.
الإصدار 1.2.0-rc01
15 يونيو 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتم الآن إنشاء الواجهات في مكتبات Compose باستخدام طرق الواجهة التلقائية في الإصدار 8 من حزمة تطوير البرامج (JDK) (I5bcf1).
الإصدار 1.2.0-beta03
1 يونيو 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-beta03. يتضمّن الإصدار 1.2.0-beta03 هذه التعديلات.
الإصدار 1.2.0-beta02
18 مايو 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-beta02. يتضمّن الإصدار 1.2.0-beta02 هذه التعديلات.
الإصدار 1.2.0-beta01
11 مايو 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.
الميزات الجديدة
- هذا هو الإصدار التجريبي الأول من الإصدار 1.2.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
Snapshot.unsafeEnter/unsafeLeaveتجريبية (I108f3) - تمت إضافة واجهة برمجة التطبيقات التجريبية
Snapshot.asContextElement()(Iff072) - يمكن الآن استخدام التعليق التوضيحي
@ComposableTargetوالتعليقات التوضيحية التي تحمل العلامة@ComposableTargetMarkerعلى مستوى الملف باستخدام البادئة@file. سيؤدي استخدام تعليق توضيحي مستهدَف على مستوى الملف إلى افتراض المترجم أنّه من المفترض أن تستهدف جميع الدوال القابلة للإنشاء في الملف أداة التطبيق المرتبطة. على سبيل المثال، يؤدي استخدام@file:UiComposableإلى الإعلان عن أنّ جميع دوال@Composableتستهدف أداة تطبيق واجهة مستخدم Compose. يجب أن توفّر الدالة التي تحتاج إلى استهداف أداة تطبيق أخرى بشكل صريح تعليقًا توضيحيًا لعلامة الاستهداف لأداة التطبيق المطلوبة. (I40804)
الإصدار 1.2.0-alpha08
20 أبريل 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha08. يتضمّن الإصدار 1.2.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
TracingInProgressإلى واجهةCompositionTracer. (Ic6f12) - إضافة
recomposeScopeIdentityإلى "الملحّن" (I0c873) - تم حصر واجهات برمجة التطبيقات لتتبُّع الأخطاء (Composer.setTracer) في
OptIn(InternalComposeTracingApi). (I9187f) - تمت إضافة
ResuableContentHostالتي تتيح تحكّمًا أفضل في مدة صلاحية الحالة التي تم إنشاؤها للمحتوى القابل لإعادة الاستخدام. على سبيل المثال، إذا لم يتم استخدام تركيبة فرعية مؤقتًا، يمكن إلغاء تنشيط المحتوى، ما يؤدي إلى نسيان كل الحالة المحفوظة في التركيبة، وبالتالي تشغيل جميع التأثيرات القابلة للتصرف، مثلاً. (I2c0f2، b/220322704)
الإصدار 1.2.0-alpha07
6 أبريل 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha07. يتضمّن الإصدار 1.2.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة الدالة الجديدة
Snapshot.withoutReadObservation { ... }. يسمح هذا الإجراء للمستخدمين بتنفيذ lambda الذي تم تمريره بدون الاشتراك في تغييرات قيم الحالة التي تمت قراءتها أثناء هذا الحظر. قد يكون هذا الخيار مفيدًا في حالات الاستخدام التي تريد فيها الاستفادة من عمليات القراءة والكتابة الآمنة في سلاسل المحادثات المستندة إلى اللقطات، ولكنك تريد أن تتمكّن من قراءة القيمة بدون التسبّب في إعادة إنشاء أو إعادة قياس غير ضرورية. (I9f365، b/214054486)
الإصدار 1.2.0-alpha06
23 مارس 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha06. يتضمّن الإصدار 1.2.0-alpha06 هذه التعديلات.
الإصدار 1.2.0-alpha05
9 مارس 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha05. يتضمّن الإصدار 1.2.0-alpha05 هذه التعديلات.
المساهمة الخارجية
- تم تعديلها لاستخدام الإصدار 1.6.0 من أنماط "كوروتين" في Kotlinx (I3366d)
الإصدار 1.2.0-alpha04
23 فبراير 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha04. يتضمّن الإصدار 1.2.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
تمت إضافة
ComposableTargetوComposableTargetMarkerوComposableOpenTargetالتي تتيح إعداد تقارير في وقت التجميع عن الحالات التي يتم فيها استدعاء دالة مركّبة تستهدف واجهة تطبيقية (applier) لم يتم تصميمها لاستخدامها.في معظم الحالات، يمكن استنتاج التعليقات التوضيحية من خلال المكوّن الإضافي لبرنامج التجميع في Compose، لذا من النادر استخدام هذه التعليقات التوضيحية مباشرةً . تشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام واجهة تطبيقية (applier) مخصّصة، أو دوال مركّبة مجرّدة (مثل طرق الواجهة)، أو حقول أو متغيرات عمومية تكون تعبيرات lambda قابلة للإنشاء (يتم استنتاج المتغيرات والمعلَمات المحلية)، أو عند استخدام
ComposeNodeأو دوال مركّبة ذات صلة.بالنسبة إلى أدوات التطبيق المخصّصة، يجب أن تضيف الدوال القابلة للإنشاء التي تستدعي
ComposeNodeأوReusableComposeNodeتعليقًا توضيحيًاCompoableTargetإلى الدالة وأي أنواع مَعلمات lambda قابلة للإنشاء. ومع ذلك، يُنصح بإنشاء تعليق توضيحي يتضمّنComposableTargetMarker، ثم استخدام التعليق التوضيحي الذي يتضمّن بدلاً منComposableTargetمباشرةً. تكون التعليقات التوضيحية القابلة للإنشاء المميّزة بـComposableTargetMarkerمكافئة لـComposbleTargetمع الاسم المؤهّل بالكامل لفئة السمة كمعلَمة مطبِّقة. للاطّلاع على مثال لاستخدامComposableTargetMarker، راجِعanroidx.compose.ui.UiComposable. (I38f11)
الإصدار 1.2.0-alpha03
9 فبراير 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha03. يتضمّن الإصدار 1.2.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
تمت إضافة
movableContentOfالتي تحوّل دالة lambda قابلة للإنشاء إلى دالة lambda تنقل حالتها والعُقد المقابلة إلى أي موقع جديد يتم استدعاؤها فيه. عندما تغادر المكالمة السابقة التركيب، يتم الاحتفاظ بالحالة مؤقتًا، وإذا انضمت مكالمة جديدة إلى التركيب، يتم نقل الحالة والعُقد المرتبطة بها إلى موقع المكالمة الجديدة. في حال عدم إضافة أي مكالمة جديدة، ستتم إزالة الحالة نهائيًا وسيتم إعلام المراقبين المسجّلين.إذا تم استدعاء دالة
movableContentOflambda عدة مرات في التركيب نفسه، يتم إنشاء حالة وعُقد جديدة لكل عملية استدعاء، وعندما تغادر عمليات الاستدعاء التركيب وتدخل عمليات استدعاء جديدة، يتم نقل الحالة من عمليات الاستدعاء الأولى المغادرة إلى عمليات الاستدعاء الداخلة بالترتيب الذي يتم استدعاؤها به. تتم إزالة جميع الحالات التي لم تتم المطالبة بها من خلال المكالمات الجديدة بشكل دائم. (Ib4850)تمت إضافة واجهة برمجة تطبيقات لتتبُّع الإصدار إلى عملية الإنشاء من أجل السماح للأدوات بتوفير تتبُّع أكثر تفصيلاً للدوال البرمجية القابلة للإنشاء. يُنشئ المترجم البرمجي الآن طلبات إلى واجهة برمجة التطبيقات الخاصة بالتتبُّع تتضمّن معلومات المصدر. (Ib0eb5)
لإزالة هذه عمليات الاستدعاء ومعلومات المصدر المرتبطة بها من بنية الإصدار، أضِف قاعدة Proguard التالية:
-assumenosideeffects public class androidx.compose.runtime.ComposerKt { boolean isTraceInProgress(); void traceEventStart(int,java.lang.String); void traceEventEnd(); }أضِف
InternalComposeScopeالذي يمنح الأدوات القدرة على تحديد عنصر قابل للإنشاء أثناء عمليات إعادة التركيب. (I07a3f)
الإصدار 1.2.0-alpha02
26 يناير 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha02. يتضمّن الإصدار 1.2.0-alpha02 هذه التعديلات.
الإصدار 1.2.0-alpha01
12 يناير 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha01. يتضمّن الإصدار 1.2.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة الحقل
identityإلىCompositionDataلإنشاء معرّفات ثابتة في "أداة فحص التنسيق". (Ic116e)
تحديثات الاعتماديات
- يعتمد الآن على Kotlin
1.6.10.
الإصدار 1.1
الإصدار 1.1.1
23 فبراير 2022
تم طرح androidx.compose.runtime:runtime-*:1.1.1. يتضمّن الإصدار 1.1.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح
NullPointerExceptionفيandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(aosp/1947059 وb/206677462) - تم إصلاح عُطل ناتج عن محتوى الحافظة أثناء القراءة من الحافظة على جهاز Android. (I06020، b/197769306)
- إصلاح مشكلة اتجاه الكتابة من اليمين إلى اليسار في
LazyVerticalGrid(aosp/1931080 وb/207510535)
الإصدار 1.1.0
9 فبراير 2022
تم طرح androidx.compose.runtime:runtime-*:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.0.0
- إتاحة تأثير تجاوز حد التمرير في Android 12 بشكل ثابت
- تحسينات على حجم مساحة اللمس
- يُرجى العِلم أنّه في ما يتعلّق بالإصدار 1.0 من Compose، ستوسّع مكوّنات Material مساحة التنسيق لتلبية إرشادات تسهيل الاستخدام في Material بشأن حجم مساحة اللمس. على سبيل المثال، سيتم توسيع مساحة اللمس الخاصة بالزر إلى حدّ أدنى يبلغ
48x48dp، حتى إذا ضبطت حجم الزر على قيمة أصغر. يؤدي ذلك إلى توافق Compose Material مع السلوك نفسه لمكوّنات التصميم المتعدد الأبعاد، ما يوفّر سلوكًا متسقًا في حال دمج عناصر View وCompose. يضمن هذا التغيير أيضًا استيفاء الحد الأدنى من متطلبات إمكانية الوصول إلى مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكوّنات Compose Material. - إتاحة شريط التنقّل الجانبي بشكل ثابت
- ترقية عدد من واجهات برمجة التطبيقات التجريبية السابقة إلى إصدار ثابت
- توفير الدعم لإصدارات أحدث من Kotlin
الإصدار 1.1.0-rc03
26 يناير 2022
تم طرح androidx.compose.runtime:runtime-*:1.1.0-rc03. يتضمّن الإصدار 1.1.0-rc03 هذه التعديلات.
إصلاح الأخطاء
- تعديل لدعم Compose Material
1.1.0-rc03
الإصدار 1.1.0-rc01
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.
الإصدار 1.1.0-beta04
1 كانون الأول (ديسمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-beta04. يتضمّن الإصدار 1.1.0-beta04 هذه التعديلات.
الميزات الجديدة
- تم تعديلها لتكون متوافقة مع الإصدار
1.6.0من Kotlin
الإصدار 1.1.0-beta03
17 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-beta03. يتضمّن الإصدار 1.1.0-beta03 هذه التعديلات.
الإصدار 1.1.0-beta02
3 نوفمبر 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-beta02. يتضمّن الإصدار 1.1.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تقسيم رمز اللقطة إلى ملفات متعددة، ولكنها لا تزال كلها مضمّنة في فئة JVM نفسها. (Ic6c98)
الإصدار 1.1.0-beta01
27 أكتوبر 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.
الإصدار 1.1.0-alpha06
13 أكتوبر 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha06. يتضمّن الإصدار 1.1.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة
InternalCompilerApiمن دوال Composer التي يجب استدعاؤها على مستوى الوحدات (I1aa0b) - تم إيقاف
Recomposer.stateنهائيًا واستبداله بـRecomposer.currentStateلتغيير نوعه إلى StateFlow (Ic2ab3، b/197773820)
الإصدار 1.1.0-alpha05
29 سبتمبر 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha05. يتضمّن الإصدار 1.1.0-alpha05 هذه التعديلات.
الإصدار 1.1.0-alpha04
15 سبتمبر 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha04. يتضمّن الإصدار 1.1.0-alpha04 هذه التعديلات.
الإصدار 1.1.0-alpha03
1 سبتمبر 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha03. يتضمّن الإصدار 1.1.0-alpha03 هذه التعديلات.
الميزات الجديدة
- يتيح Compose Compiler الآن استخدام الإصدارات القديمة من Compose Runtime (الإصدار 1.0). قبل هذا التغيير، كان برنامج Compose Compiler متوافقًا فقط مع Compose Runtime من الإصدار نفسه أو إصدار أحدث. بعد هذا التغيير، يصبح "مترجم Compose" متوافقًا مع إصدار قديم من "وقت تشغيل Compose" (1.0). (aosp/1796968)
- تم تعديل إصدار Compose
1.1.0-alpha03ليعتمد على إصدار Kotlin1.5.30. (I74545)
الإصدار 1.1.0-alpha02
18 أغسطس 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha02. يتضمّن الإصدار 1.1.0-alpha02 هذه التعديلات.
الإصدار 1.1.0-alpha01
4 أغسطس 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha01. يتضمّن الإصدار 1.1.0-alpha01 هذه التعديلات.
الإصدار 1.0
الإصدار 1.0.5
3 نوفمبر 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.5. يتضمّن الإصدار 1.0.5 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة تعطُّل تتبُّع مثيلات derivedStateOf. (aosp/1792247)
الإصدار 1.0.4
13 أكتوبر 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.4. يتضمّن الإصدار 1.0.4 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على الإصدار
1.5.31من Kotlin
الإصدار 1.0.3
29 سبتمبر 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.3. يتضمّن الإصدار 1.0.3 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على الإصدار
1.5.30من Kotlin
الإصدار 1.0.2
1 سبتمبر 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.2. يتضمّن الإصدار 1.0.2 هذه التعديلات.
تم تعديلها لتتوافق مع إصدار Compose 1.0.2. لا يزال Compose 1.0.2 متوافقًا مع Kotlin 1.5.21.
الإصدار 1.0.1
4 أغسطس 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.1. يتضمّن الإصدار 1.0.1 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديلها لتعتمد على الإصدار
1.5.21من Kotlin.
الإصدار 1.0.0
28 يوليو 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0. يتضمّن الإصدار 1.0.0 هذه التعديلات.
الميزات الرئيسية في الإصدار 1.0.0
هذا هو الإصدار الثابت الأول من Compose. يُرجى الاطّلاع على مدوّنة إصدار Compose الرسمية لمزيد من التفاصيل.
المشاكل المعروفة
إذا كنت تستخدم الإصدار 4 من استوديو Android Bumblebee Canary أو الإصدار
7.1.0-alpha04/7.1.0-alpha05من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"، قد تواجه التعطّل التالي:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"لحلّ هذه المشكلة، عليك زيادة minSdkVersion مؤقتًا إلى 24 أو أكثر في ملف
build.gradle. سيتم حلّ هذه المشكلة في الإصدار التالي من "استوديو Android Bumblebee" و7.1"مكوّن Android الإضافي لنظام Gradle". (b/194289155)
الإصدار 1.0.0-rc02
14 يوليو 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-rc02. يتضمّن الإصدار 1.0.0-rc02 هذه التعديلات.
- تم إصلاح حالات السباق في SnapshotStateObserver التي تتسبّب في حدوث أخطاء NullPointerException متقطّعة. (aosp/1763445 وaosp/1758105 وb/192677711)
- تم إصلاح المشاكل المتعلّقة باللقطات في وقت التشغيل التي كانت تتسبّب في حدوث أعطال
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied. (b/193006595 وb/192570897)
الإصدار 1.0.0-rc01
1 تموز (يوليو) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-rc01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.
الإصدار 1.0.0-beta09
16 حزيران (يونيو) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta09. يتضمّن الإصدار 1.0.0-beta09 هذه التعديلات.
قواعد الملفات الشخصية المُضافة
يضيف هذا الإصدار قواعد الملف الشخصي إلى وحدات الإنشاء التالية (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
ما هي قواعد الملف الشخصي؟
يتم تحديد قواعد الملف الشخصي لمكتبة في ملف نصي
baseline-prof.txtيقع في الدليلsrc/mainأو دليل مكافئ. يحدّد الملف قاعدة لكل سطر، حيث تكون القاعدة في هذه الحالة عبارة عن نمط للمطابقة مع الطرق أو الفئات في المكتبة. بنية هذه القواعد هي مجموعة فرعية من تنسيق ملف ART الشخصي القابل للقراءة الذي يتم استخدامه عند استخدامadb shell profman --dump-classes-and-methods .... تتّخذ هذه القواعد أحد الشكلَين التاليَين لاستهداف الطرق أو الفئات.ستتّبع قاعدة الطريقة النمط التالي:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>وستتّبع قاعدة الفئة النمط التالي:
<CLASS_DESCRIPTOR>هنا
<FLAGS>هو واحد أو أكثر من الأحرفHوSوPللإشارة إلى ما إذا كان يجب تصنيف هذه الطريقة على أنّها "مهمة" أو "بدء التشغيل" أو "بعد بدء التشغيل".<CLASS_DESCRIPTOR>هو واصف للفئة التي تنتمي إليها الطريقة المستهدَفة. على سبيل المثال، سيكون للفئةandroidx.compose.runtime.SlotTableواصفLandroidx/compose/runtime/SlotTable;.
<METHOD_SIGNATURE>هي توقيع الطريقة، وتشمل الاسم وأنواع المَعلمات وأنواع الإرجاع الخاصة بالطريقة. على سبيل المثال، يتضمّن الإجراءfun isPlaced(): BooleanفيLayoutNodeالتوقيعisPlaced()Z.يمكن أن تتضمّن هذه الأنماط أحرف بدل (
**و*و?) لكي تشمل قاعدة واحدة طرقًا أو فئات متعدّدة.
ما هي وظيفة القواعد؟
تشير الطريقة التي تحمل العلامة
Hإلى أنّ هذه الطريقة هي طريقة "نشطة"، ويجب تجميعها مسبقًا.تشير الطريقة التي تتضمّن العلامة
Sإلى أنّها طريقة يتم استدعاؤها عند بدء التشغيل، ويجب تجميعها مسبقًا لتجنُّب تكلفة التجميع وتفسير الطريقة عند بدء التشغيل.تشير الطريقة التي تحتوي على العلامة
Pإلى أنّها طريقة يتم استدعاؤها بعد بدء التشغيل.يشير أحد الصفوف المتوفّر في هذا الملف إلى أنّه يتم استخدامه أثناء بدء التشغيل ويجب تخصيصه مسبقًا في الذاكرة المؤقتة لتجنُّب تكلفة تحميل الصف.
آلية العمل
- يمكن للمكتبات تحديد هذه القواعد التي سيتم تضمينها في عناصر AAR. عند إنشاء تطبيق يتضمّن هذه العناصر، يتم دمج هذه القواعد معًا واستخدام القواعد المدمجة لإنشاء ملف شخصي ثنائي مضغوط خاص بالتطبيق في ART. ويمكن أن يستفيد ART من هذا الملف الشخصي عند تثبيت التطبيق على الأجهزة من أجل تجميع مجموعة فرعية محدّدة من التطبيق مسبقًا لتحسين أداء التطبيق، وخاصةً عند تشغيله للمرة الأولى. يُرجى العِلم أنّ هذا الإجراء لن يؤثر في التطبيقات التي يمكن تصحيح أخطائها.
الإصدار 1.0.0-beta08
2 حزيران (يونيو) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta08. يتضمّن الإصدار 1.0.0-beta08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
-
State<T>أصبح الآنState<out T>(I69049) ControlledCompositionتغيير في واجهة برمجة التطبيقات يتيح إعادة إنشاء التغييرات في عملية إعادة إنشاء واحدة. (Iaafd1، b/184173932)
الإصدار 1.0.0-beta07
18 أيار (مايو) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta07. يتضمّن الإصدار 1.0.0-beta07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهات برمجة تطبيقات جديدة لمترجم Compose تتيح إزالة معلومات المصدر التي ينشئها المترجم أثناء تصغير حجم المصدر. (Ia34e6)
يقدّم هذا الإصدار
ReusableContentالتي ستحاول إعادة استخدام العُقد في محتواها بدلاً من استبدالها عند تغيير المفتاح. عند تغيير المفتاح، يتم تجاهل القيم السابقة في جدول الخانات الخاص بالمحتوى، باستثناء العُقد التي تم إنشاؤها والقيم المستخدَمة لتعديل العُقد.تضيف هذه السمة
ReusableComposeNodeالتي ستعيد استخدام العقدة المنبعثة بدلاً من استبدالها كما هو الحال معComposeNode. (I1dd86)لم يعُد
@ComposeCompilerApi@RequiresOptIn(Iab690)
إصلاح الأخطاء
- ستحتفظ السمة LazyColumn/Row الآن بما يصل إلى عنصرَين مرئيَين سابقًا نشطَين (غير مُهملَين) حتى عند إزاحتهما من الشاشة. يتيح ذلك للمكوّن إعادة استخدام التركيبات الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد، ما يحسّن أداء التمرير. (Ie5555)
الإصدار 1.0.0-beta06
5 مايو 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta06. يتضمّن الإصدار 1.0.0-beta06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- لم يعُد
@ComposeCompilerApi@RequiresOptIn(Iab690)
الإصدار 1.0.0-beta05
21 أبريل 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta05. يتضمّن الإصدار 1.0.0-beta05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة
@InternalComposeApiلقراءة وكتابة لقطات التسجيل (Id134d)
إصلاح الأخطاء
- أصبحت ملفات AndroidManifest من ui-test-manifest وui-tooling-data متوافقة الآن مع Android 12 (I6f9de، b/184718994)
الإصدار 1.0.0-beta04
7 أبريل 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta04. يتضمّن الإصدار 1.0.0-beta04 هذه التعديلات.
إصلاح الأخطاء
قبل هذا التغيير، كان يمكن تخطّي الدوال البرمجية القابلة للإنشاء المحلية استنادًا إلى مَعلماتها. بعد هذا التغيير، لن يتم تخطّي أي دوال قابلة للإنشاء محليًا. تم إجراء هذا التغيير لأنّه من الشائع والمتوقّع أن تحصل الدوال المحلية على المَعلمات من العنصر الأصل، كما أنّ عدم حصولها عليها هو مصدر شائع للأخطاء.
لتلخيص ذلك، ضع في اعتبارك المثال التالي:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }قبل هذا التغيير، كانت الدالة المركّبة
ShowCountتتخطى دائمًا، حتى بعد تعديل المَعلمةcount. لم يعُد هذا هو الحال. (I5648a)تم إصلاح المشكلة التي كانت تحدث عندما كانت الدالة
rememberSaveable()تستعيد القيمة القديمة عند استخدامها مع مَعلمات الإدخال (I1b110، b/182403380)
الإصدار 1.0.0-beta03
24 مارس 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta03. يتضمّن الإصدار 1.0.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
DefaultMonotonicFrameClockنهائيًا. سيؤدي الآن استدعاءwithFrameNanosأوRecomposer.runRecomposeAndApplyChangesبدونMonotonicFrameClockإلى طرحIllegalStateException. (I4eb0d)
الإصدار 1.0.0-beta02
10 آذار (مارس) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta02. يتضمّن الإصدار 1.0.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- فرض قيود على الاستخدام العلني لواجهات برمجة التطبيقات التجريبية (I6aa29 وb/174531520)
- إصلاح المشكلة في
rememberSaveable { mutableStateOf(0) }عند استخدامه داخل وجهة في navigation-compose (I1312b، b/180042685، b/180701630)
الإصدار 1.0.0-beta01
24 شباط (فبراير) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.
هذا هو الإصدار الأول من Compose 1.0.0 Beta.
تغييرات واجهة برمجة التطبيقات
- أضِف
Recomposer.runRecomposeConcurrentlyAndApplyChangesواجهة برمجة التطبيقات التجريبية لإعادة إنشاء التركيبات التي تم إبطالها خارج حلقة إطار العرض الرئيسية. (I342d0) - يتم الآن التحقّق من صحة أي عناصر قابلة للإنشاء تم وضع علامة @ReadOnlyComposable عليها في وقت الترجمة البرمجية للتأكّد من أنّها لا تجري سوى عمليات استدعاء لعناصر أخرى تحمل العلامة @ReadOnlyComposables (I58961)
أصبح من الضروري توفير
defaultFactoryلـcompositionLocalOfوstaticCompositionLocalOfبدلاً من أن يكون ذلك اختياريًا.يزيل هذا التغيير خطأ محتملاً في النوع بالنسبة إلى الأنواع غير القابلة للتصنيف كقيم فارغة والتي لم يتم توفير أي إعدادات أصلية تلقائية لها. في السابق، كان هذا الإجراء يوفّر مرجعًا فارغًا لنوع غير قابل للتصغير.
بالنسبة إلى الأنواع التي تقبل القيم الخالية، ننصحك بتوفير
{ null }كإعداد تلقائي للمصنع.لا ننصح باستخدام متغيرات محلية مع أنواع غير قابلة للتصغير إلا إذا كان من الممكن توفير قيمة تلقائية معقولة. إذا لم تكن هناك قيمة تلقائية منطقية، يجب أن تعرض دالة
defaultFactorylambda استثناءً. ومع ذلك، فإنّ طرح استثناء يعني أنّ مستهلكي اللغة المحلية سيكون لديهم تبعية ضمنية على توفيرها، وهي تبعية لا يفرضها نظام الأنواع. (Ifbd2a)تمت إزالة الرموز المتوقّفة نهائيًا من وقت تشغيل Compose (I3252c)
تمت إزالة
emptyContent()المتوقّفة نهائيًا. يمكنك استخدام{}كبديل. (Idb33f، b/179432510)تمت إعادة تسمية Providers إلى CompositionLocalProvider
- لم يعُد منشئ Composition يقبل مَعلمة مفتاح، وتم إيقافه نهائيًا.
- تم تحويل currentCompositeKeyHash إلى سمة قابلة للإنشاء على المستوى الأعلى بدلاً من دالة قابلة للإنشاء على المستوى الأعلى.
- تم نقل CompositionData وCompositionGroup إلى مساحة الاسم androidx.compose.runtime.tooling
- تم تحويل ComposableLambda إلى واجهة بدلاً من فئة ملموسة، ولم يعُد يتضمّن مَعلمات أنواع.
- تم تحويل ComposableLambdaN إلى واجهة بدلاً من فئة مجرّدة، ولم يعُد يتضمّن مَعلمات النوع.
- تم نقل الدالة snapshotFlow إلى مساحة الاسم androidx.compose.runtime
- لم تعُد طريقة الدمج في SnapshotMutationPolicy تجريبية
- تمت إزالة الدالة clearRoots ذات المستوى الأعلى @TestOnly. لم يعُد ذلك ضروريًا.
- تمت إزالة الدالتَين keySourceInfoOf وresetSourceInfo. لم يعُد من الضروري استخدامها.
- تمت إزالة Composer.collectKeySourceInformation. لم يعُد ذلك ضروريًا.
- تمت إزالة الطرق isJoinedKey وjoinedKeyLeft وjoinedKeyRight. لم يعُد من الضروري استخدامها.
- تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. بسبب دلالات فئة الملف في Kotlin، سيؤدي ذلك إلى إيقاف التوافق الثنائي ولكن ليس التوافق مع المصدر، لذا لن يسبّب مشكلة لمعظم المستخدمين.
- (I99b7d، b/177245490)
لم يعُد SnapshotStateObserver تجريبيًا (Id2e6a)
تم حذف بعض واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا (Ice5da وb/178633932)
أجرينا التغييرات التالية على واجهة Material API:
- تمت إضافة المَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص المساحة المتروكة التلقائية.
- تمت إعادة ترتيب المَعلمات في BackdropScaffold لتتّبع إرشادات واجهة برمجة التطبيقات بشأن المَعلمات المطلوبة التي تسبق المَعلمات الاختيارية.
- تم نقل المَعلمة
iconفي BottomNavigationItem لتصبح بعدselectedوonClick. - تمت إعادة تسمية المَعلمة
alwaysShowLabelsفي BottomNavigationItem إلىalwaysShowLabel. - تمت إعادة تسمية مَعلمات
bodyContentفي بعض المكوّنات إلىcontentفقط. - تمت إعادة ترتيب المَعلمات في
ButtonDefaults.buttonColors(). يُرجى العِلم أنّه بما أنّ نوع المَعلمات لم يتغيّر، لن يتسبّب ذلك في حدوث خطأ في الرمز. يُرجى التأكّد من أنّك تستخدم مَعلمات مسماة أو تعدّل الترتيب يدويًا، وإلا لن يعمل الرمز بالطريقة نفسها كما كان في السابق. - تمت إضافة المَعلمة
secondaryVariantإلىdarkColors(). يكون هذا اللون عادةً هو نفسهsecondaryفي "المظهر الداكن"، ولكن تتم إضافته لتحقيق التناسق والمزيد من التخصيص. - تمت إزالة ElevationDefaults وanimateElevation() من مساحة واجهة برمجة التطبيقات العامة لأنّهما لم يكونا شائعَي الاستخدام أو مفيدَين.
- تمت إعادة تسمية
onValueChangeEndفيSliderإلىonValueChangeFinishedوتم السماح بقيمة فارغة. - تمت إعادة تسمية المَعلمة
textفيSnackbarإلىcontentلضمان الاتساق. - تمت إضافة المَعلمة
contentPaddingإلىDropdownMenuItemللسماح بتخصيص المساحة المتروكة التلقائية، وتمّت إضافةcontentكإضافة إلىRowScope. - تمت إعادة تسمية
ModalDrawerLayoutإلىModalDrawer. - تمت إعادة تسمية
BottomDrawerLayoutإلىBottomDrawer. - (I1cc66)
الإصدار 1.0.0-alpha12
10 شباط (فبراير) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha12. يتضمّن الإصدار 1.0.0-alpha12 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة إمكانية استخدام ViewGroups من UiApplier. تمت إزالة الدوال البرمجية القابلة للإنشاء emitView المتوقّفة نهائيًا. (Ifb214)
- تمت إعادة تسمية CompositionReference إلى CompositionContext (I53fcb)
- تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في الوحدة androidx.activity:activity-compose. (Icf416)
- تم تعديل Snapshot API ليكون أكثر اتساقًا مع إرشادات واجهة برمجة التطبيقات، بالإضافة إلى إخفاء فئات التنفيذ الداخلية من واجهة برمجة التطبيقات المتاحة للجميع. (Id9e32)
- تمت إعادة تسمية Ambients لتتطابق مع إعادة تسمية Ambient -> CompositionLocal. كانت أسماء Ambients في السابق AmbientFoo، وأصبحت أسماء CompositionLocals الآن LocalFoo. (I2d55d)
- تمت إعادة تسمية Ambient إلى CompositionLocal، وambientOf / staticAmbientOf إلى compositionLocalOf / staticCompositionLocalOf على التوالي. يساعد هذا التغيير في توضيح الغرض من CompositionLocal بشكل أكبر، وهو آلية لتوفير / استرداد القيم المحلية لتكوين معيّن. يجب أن تكون بادئة مثيلات CompositionLocal هي
Local، مثل val LocalFoo = compositionLocalOf { Foo() }. (Ia55b6) - تم نقل الدالتَين takeMutableSnapshot وtakeSnapshot لتصبحا دالتَين مصاحبتَين للدالة Snapshot. (I91f19)
تم إيقاف
@ComposableContractنهائيًا واستبداله بثلاث تعليقات توضيحية أكثر تحديدًا.أصبح
@ComposableContract(restartable = false)هو@NonRestartableComposableأصبح@ComposableContract(readonly = true)هو@ReadOnlyComposableأصبح@ComposableContract(preventCapture = true)هو@DisallowComposableCallsتمت إزالة@ComposableContract(tracked = true). (I60a9d)تم إيقاف الأداتَين المساعدتَين emptyContent() و (@Composable () -> Unit).orEmpty() نهائيًا لأنّهما لم تعودا تؤثّران بشكل إيجابي في الأداء أو تقدّمان أي قيمة (I0484d).
لم يعُد
snapshotFlowوwithMutableSnapshotتجريبيين (I6a45f)يمكن الآن إغلاق نوافذ إعادة التركيب. ستستمر عمليات إعادة التركيب المغلقة إلى أن تكتمل إجراءات الروتين الفرعية الخاصة بالتركيب. تمت إعادة تسمية Recomposer.shutDown إلى cancel للتمييز بينها وبين close. (Ib6d76)
تم الآن إيقاف العنصر
compose:runtime-dispatchنهائيًا. يمكنك الآن العثور على MonotonicFrameClock في compose:runtime، ويمكنك العثور على AndroidUiDispatcher في compose:ui. (Ib5c36)تمت إعادة تصميم واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي لبرنامج الترجمة البرمجية في Compose لاستخدام واجهة بدلاً من فئة مجرّدة. لم تعُد الواجهة تستخدم مَعلمة نوع.
هذا تغيير داخلي لا يؤثّر في توافق رمز المصدر، ولكنّه تغيير ثنائي غير متوافق. (I3b922، b/169406779)
تم تقديم SnapshotMutableState (Icfd03)
تمت إعادة تسمية DisposableEffectDisposable إلى DisposaleEffectResult (Ica7c6)
تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم إنشاؤه تلقائيًا بشكل مؤجّل، ويتم تشغيل Recomposers بنطاق النافذة من خلال ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة التركيب مؤقتًا، كما يتم إيقاف علامات الصورة المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء إيقاف Lifecycle الخاص بالمضيف. (I38e11)
تقدّم Recomposer.runningRecomposers الآن StateFlow العالمي الخاص بـ RecomposerInfo للقراءة فقط، وذلك لمراقبة حالة الإنشاء الجاري في العملية. ننصحك باستخدام واجهة برمجة التطبيقات هذه بدلاً من Recomposer.current()، التي تم إيقافها نهائيًا. (If8ebe)
تمت إعادة تسمية DisposableEffectDisposable إلى DisposaleEffectResult (I3ea68)
الإصدار 1.0.0-alpha11
28 يناير 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha11. يتضمّن الإصدار 1.0.0-alpha11 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف onCommit وonDispose وonActive نهائيًا لصالح واجهتَي برمجة التطبيقات SideEffect وDisposableEffect (If760e)
- تم إيقاف واجهة برمجة التطبيقات emit() وجميع عمليات التحميل الزائد نهائيًا، وتمت إعادة تسميتها إلى ComposeNode. واجهات برمجة التطبيقات متطابقة، ولكن الاسم مختلف من أجل اتّباع اصطلاحات التسمية في Compose (I4137b)
- تم الآن إيقاف invalidate وcompositionReference() نهائيًا لصالح currentRecomposeScope وrememberCompositionReference على التوالي. (I583a8)
يحل RememberObserver محل CompositionLifecycleObserver، وأصبح CompositionLifecycleObserver نهائيًا الآن.
RememberObserverهو بديل عنCompositionLifecycleObserverمع دلالات معدَّلة وطرق تمت إعادة تسميتها. يمكن إجراء التغيير إلى واجهة برمجة التطبيقات الجديدة بشكل آلي للعناصر التي يتم تذكّرها مرة واحدة فقط، وهو ما يظل الإجراء المُقترَح. ومع ذلك، إذا تم تذكُّر مرجع أكثر من مرة في تركيبة، يتم استدعاءonRememberedلكل مرجع، بينما يتم استدعاءonEnterمرة واحدة فقط. تم استدعاءonEnterعدة مرات إذا تم استخدام العنصر في تركيبات فرعية، مثلWithConstraintsوScaffold، ما جعل عملية الاستدعاء الفرديةonEnterغير موثوقة وتمت إزالتها فيRememberObserver.تضيف
RememberObserverالدالةonAbandonedالتي يتم استدعاؤها إذا تم عرض مثيلRememberObserverمن معاودة الاتصال التي تم تمريرها إلىrememberولكن لم يتم تذكّره في حالة التركيب، وبالتالي لن يتم استدعاءonRememberedأبدًا. يمكن أن يحدث ذلك إذا أنهى استثناء عملية الإنشاء قبل اكتمالها أو إذا تم تجاهل عملية الإنشاء لأنّ الحالة التي كانت تنتج عملية الإنشاء لم تعُد حالية أو لم تعُد مطلوبة. إذا كان مثيلRememberObserverالذي يلي اقتراح المرجع الفردي أعلاه يتتبّع مرجعًا خارجيًا، يشير كل منonForgottenوonAbandonedإلى أنّه لم يعُد هناك حاجة إلى المرجع. إذا كان العنصر يتتبّع العمل الذي بدأ أو الموارد المخصّصة فيonRemembered، يمكن تجاهلonAbandonedلأنّه لن يتم استدعاؤه إذا تم استدعاءonRemembered. (I02c36)عدم وضع علامة على الدوال
collectAsState()كدوال مضمّنة (Ia73e4)
إصلاح الأخطاء
- تمت إعادة تصميم WithConstraints ليصبح BoxWithConstraints وتم نقله إلى foundation.layout. (I9420b، b/173387208)
- استخدام TestCoroutineDispatcher في الاختبار (I532b6)
الإصدار 1.0.0-alpha10
13 كانون الثاني (يناير) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha10. يتضمّن الإصدار 1.0.0-alpha10 هذه التعديلات.
تغيير قد يؤدي إلى أعطال
تتيح إعادة هيكلة واجهة برمجة التطبيقات الداخلية للمترجم البرمجي تجميع التغييرات في العُقد التي تم إنشاؤها نتيجة التركيب في مرحلة "تطبيق التغييرات" من عملية التركيب، وذلك بعد اكتمال جميع دوال
@Composable.هذا تغيير سلوكي قد يؤدي إلى عطل وقد يؤثر في الرمز البرمجي للتطبيق، لأنّه لن تتوفّر العُقد من واجهات برمجة التطبيقات الداخلية والميزات التجريبية إلا بعد تطبيق التغييرات. يمكن عادةً حلّ هذه المشكلة من خلال إحاطة الرمز البرمجي الذي يتضمّن هذه التبعيات بعنصر
SideEffectقابل للإنشاء لتأجيل تنفيذ الرمز البرمجي إلى ما بعد إنشاء العُقد وتهيئتها. (I018da)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة لتتبُّع ما إذا كان قد طبّق المكوّن المعاد تركيبه التغييرات. (I1b3e2)
توسيع نطاق واجهات برمجة التطبيقات [Abstract]ComposeView للسماح بإعادة استخدام طرق العرض المستندة إلى Compose، والتخلّص من تركيبها لإعادة إنشائها مرة أخرى لاحقًا إضافة واجهات برمجة تطبيقات لتثبيت Recomposers ذات النطاق المحدود واكتشافها وCompositionReferences لإنشاء عمليات تركيب فرعية
إضافة ViewCompositionStrategy لضبط استراتيجية التخلص من التركيبة في [Abstract]ComposeViews، ويكون السلوك التلقائي هو التخلص عند فصل النافذة (I860ab)
إصلاح الأخطاء
- تعرض Recomposer الآن تدفّقًا لحالتها الحالية، ما يتيح رصد نشاطها ونشاط التأثيرات المرتبطة بها. (Ifb2b9)
- يمكن الآن الوصول إلى keyEvent الأصلي من خلال keyEvent.nativeKeyEvent (I87c57، b/173086397).
الإصدار 1.0.0-alpha09
16 كانون الأول (ديسمبر) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha09. يتضمّن الإصدار 1.0.0-alpha09 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
تمت إزالة SlotTable وSlotReader وSlotWriter من واجهة برمجة التطبيقات العامة. كانت هذه السمة تحمل سابقًا الاسم InternalComposeAPI. وهي الآن داخلية في وحدة Compose.
تمت إضافة CompositionData وCompositionGroup كبديل لواجهة برمجة التطبيقات ui-tooling لاستخدامها في استخراج معلومات التركيب. هذه الحقول عامة ولكنها غير مخصّصة للاستخدام خارج واجهة برمجة التطبيقات ui-tooling لأنّها توفّر المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling (I31a9c).
لم يعُد يتم اعتبار فئة Applier (Id85b0)
تم تغيير واجهة
Applierلتسهيل إنشاء الأشجار من الأسفل إلى الأعلى بدلاً من الأعلى إلى الأسفل.تمت إعادة تسمية الطريقة
insert()لتصبحinsertTopDown().تمت إضافة طريقة جديدة، وهي
insertBottomUp().يُدرج التطبيق إما عقدًا في الشجرة التي يعدّلها باستخدام
insertTopDown()أوinsertBottomUp()حسب الأداء الأفضل.بعض البنى، مثل
LayoutNodeوView، تكون أكثر فعالية عند إنشائها من الأسفل إلى الأعلى مقارنةً بإنشائها من الأعلى إلى الأسفل. قبل هذا التغيير، كان يجب توفير مجموعة من عمليات الإدراج لتنفيذ عملية الإنشاء من الأسفل إلى الأعلى، وكان يجب نسخها إلى كل أداة تطبيق تحتاج إلى عملية الإنشاء من الأسفل إلى الأعلى لتحسين الأداء. من خلال هذا التغيير،ApplierتتجاوزinsertBottomUp()لإنشاء شجرة من الأسفل إلى الأعلى، وinsertTopDown()لإنشاء الشجرة من الأعلى إلى الأسفل. (Icbdc2)تتيح Compose أدوات إرجاع القيمة التي يمكنها إنشاء استدعاءات الدوال المركّبة. لن يتم إيقاف هذه الميزة، ولكن سيتم تغيير بنية تعريف أداة إرجاع قيمة الخصائص على أنّها @Composable.
كانت البنية التي تم إيقافها نهائيًا لإجراء ذلك هي إضافة تعليق توضيحي إلى السمة نفسها:
@Composable val someProperty: Int get() = ...بنية الجملة الصحيحة الآن لإجراء ذلك هي إضافة علامة توضيح إلى أداة إرجاع القيمة للسمة:
val someProperty: Int @Composable get() = ...ستعمل كلتا البنيتين لفترة من الوقت، ولكنّ البنية السابقة المتوقّفة نهائيًا ستصبح في النهاية خطأ في التجميع. (Id9197)
إصلاح الأخطاء
- AndroidOwner made internal (Ibcad0, b/170296980)
- تمت إتاحة استخدام subcomposeInto(LayoutNode) للمستخدمين الداخليين فقط (Id724a)
الإصدار 1.0.0-alpha08
2 ديسمبر 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha08. يتضمّن الإصدار 1.0.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة فحص lint لتسمية مَعلمات lambda القابلة للإنشاء وموضعها، وذلك للتحقّق من التوافق مع إرشادات Compose.
تم أيضًا نقل بعض واجهات برمجة التطبيقات التي تستخدم
childrenكاسم لدالة lambda اللاحقة إلىcontent، وذلك وفقًا لفحص lint والإرشادات. (Iec48e) - لم يعُد Recomposer يقبل EmbeddingContext، ويتم الحصول على تبعيات الجدولة المطلوبة من effectCoroutineContext. تم إيقاف FrameManager نهائيًا، ويجب أن تبدأ عمليات الدمج مع الأنظمة الأساسية في معالجة اللقطات العامة الخاصة بها. (I02369)
- تمت إعادة تسمية الدالة RestorableStateHolder.withRestorableState إلى RestorableStateProvider (I66640)
إصلاح الأخطاء
- تم إيقاف Ambients القديمة التي تحمل اللاحقة
Ambient، واستبدالها بخصائص جديدة مسبوقة بـ Ambient، وذلك وفقًا لإرشادات Ambients الأخرى وواجهة برمجة التطبيقات Compose. (I33440) - إزالة وحدة ui-test القديمة ورموزها (I3a7cb)
الإصدار 1.0.0-alpha07
11 تشرين الثاني (نوفمبر)، 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha07. يتضمّن الإصدار 1.0.0-alpha07 هذه التعديلات.
الميزات الجديدة
تغييرات واجهة برمجة التطبيقات
- تم إيقاف التعليق التوضيحي "
@UnionType" نهائيًا (I57cde) - تمت إضافة provideDefault كبديل لـ provide لتوفير البيانات المحيطة، ويمكن استخدامه لتحديد قيم البيانات المحيطة التي سيتم ضبطها فقط عندما لا تكون هناك قيمة بيانات محيطة متوفّرة. (Id6635، b/171024925)
- تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لضمان التناسق مع واجهتَي برمجة التطبيقات SideEffect وDisposableEffect. لا يُسمح باستخدام LaunchedEffect بدون معلَمات موضوع لتشجيع أفضل الممارسات. (Ifd3d4)
- يتضمّن Applier الآن عمليات ردّ الاتصال onBeginChanges/onEndChanges التي يتم استدعاؤها عندما يبدأ Composer في تطبيق التغييرات على الشجرة أو ينتهي من ذلك. ويمكن استخدامها لإدارة الموارد المجمّعة عند الحاجة. (Icf476)
- يتطلّب Recomposer الآن CoroutineContext عند الإنشاء (Ic4610)
- تغييرات على التنفيذ الداخلي لـ SlotTable لا يفترض أن تؤثّر في واجهة برمجة التطبيقات العامة (If9828)
- تمت إزالة المحوّلات المتوقّفة نهائيًا rxjava2 التي لا تأخذ القيمة الأولية (Idb72f)
إصلاح الأخطاء
- تم إيقاف foundation.Text نهائيًا واستبداله بـ material.Text. للحصول على واجهة برمجة تطبيقات أساسية وغير متحيزة للنص لا تستخدم قيمًا من سمة، اطّلِع على androidx.compose.foundation.BasicText. (If64cb)
- تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
- تم نقل العديد من الرموز ذات الصلة بالتصميم من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)
المساهمة الخارجية
- تمت إضافة الوحدة
runtime-rxjava3لإنشاء الرسائل. تشبهruntime-rxjava2(I02cbf)
الإصدار 1.0.0-alpha06
28 أكتوبر 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha06. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أصبح Recomposer الآن CompositionReference ووالدًا صالحًا للتكوين. أصبح Recomposer الصريح مطلوبًا الآن في أماكن أقل. (I4036f)
- تمت إضافة واجهة برمجة تطبيقات DisposableEffect مكافئة إلى SideEffect، ما يتيح تنفيذ وظيفة onCommit-with-params ولكن مع توفُّر onDispose المطلوبة.
- تمت إضافة واجهة برمجة التطبيقات rememberUpdatedState لنشر البيانات من إعادة التركيب إلى العمليات الجارية أو الطويلة الأمد، مثل DisposableEffects أو LaunchedTasks.
- (Id50b9)
- أصبحت فئة MutableVector تنفّذ الآن RandomAccess (I85d73، b/170461551)
- تمت إضافة دالة SideEffect قابلة للإنشاء لتطبيق الآثار الجانبية للتركيب على العناصر التي يديرها التركيب. تم تصميم SideEffect لاستبدال الدالة المركّبة onCommit. (Ia77c2)
- واجهة برمجة تطبيقات تجريبية جديدة باسم RestorableStateHolder. يسمح هذا الإجراء بحفظ الحالة المحدّدة باستخدام [savedInstanceState] و[rememberSavedInstanceState] للشجرة الفرعية قبل التخلص منها، وذلك لإتاحة إمكانية إعادة إنشائها في المرة القادمة مع الحالة المستعادة. (I66884، b/166586419)
إصلاح الأخطاء
- تفعيل عمليات الانتقال في ComposeTestRule وإزالة خيار تفعيل المؤشر الوامض من ComposeTestRule (If0de3)
الإصدار 1.0.0-alpha05
14 أكتوبر 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha05. يتضمّن الإصدار 1.0.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- Experimental Modifier.pointerInput suspending input modifier (Ia77d2)
- تم تحسين أداء التمرير في LazyColumn/Row من خلال تقليل العمل في التركيب الفرعي عند كل تمرير. تمت إضافة طريقة hasInvalidations() الجديدة إلى فئة Composition. تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
- إضافة واجهة برمجة التطبيقات produceState لتشغيل إجراءات روتينية من التركيب
التي تعدّل قيمة
State<T>واحدة بمرور الوقت (Id4a57) - تمت إعادة تسمية launchInComposition إلى LaunchedTask لتتوافق مع إرشادات واجهة برمجة التطبيقات Compose (I99a8e)
- يحدّد ترتيب طلبات place() في التصاميم المخصّصة الآن ترتيب الرسم للعناصر الثانوية (Ibc9f6)
الإصدار 1.0.0-alpha04
1 تشرين الأول (أكتوبر) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha04. يتضمّن الإصدار 1.0.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة OwnerScope للسماح بجمع نطاقات مراقبة التنسيق والرسم بعد أن تصبح غير صالحة. (Ic4cf8)
- تمت إضافة واجهة برمجة التطبيقات derivedStateOf لإنشاء عناصر State استنادًا إلى عملية حسابية يمكنها قراءة عناصر State أخرى (والاستناد إليها) (If758b)
- تمت إضافة TestOnly API إلى SnapshotStateObserver (I6e2a9)
إصلاح الأخطاء
- تم إيقاف foundation.Box نهائيًا. يُرجى استخدام foundation.layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
الإصدار 1.0.0-alpha03
16 أيلول (سبتمبر) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha03. يتضمّن الإصدار 1.0.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- لم يعُد
CompositionCoroutineScopeينفّذMonotonicFrameClock. على المتصلين بالدالةwithFrameNanosاستيراد الدالة ذات المستوى الأعلى بشكل صريح. (Icb642، b/166778123)
إصلاح الأخطاء
- تم الآن إيقاف دوال الاختبار العامة، مثل
onNodeأوwaitForIdle، نهائيًا. يُرجى نقل البيانات إلى الدوال الجديدة المماثلة التي تم تحديدها في ComposeTestRule (I7f45a). - لم يعُد
launchInCompositionيطلق الكوروتينات غير المُرسَلة (Ief6af، b/166486000)
الإصدار 1.0.0-alpha02
2 سبتمبر 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha02. يتضمّن الإصدار 1.0.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة واجهتَي برمجة التطبيقات
snapshotFlowوwithMutableSnapshotلاستهلاك التغييرات في بيانات Snapshot وإنتاجها (I3e722) تم تغيير اصطلاح الاستدعاء للدوال القابلة للإنشاء. هذا تغيير ثنائي قد يؤدي إلى عطل. يجب إعادة تجميع جميع المكتبات لتعمل مع هذا الإصدار من مكوّن Compose الإضافي للمترجم.
لا يؤدي هذا التغيير إلى حدوث تغيير على مستوى المصدر لأنّ واجهات برمجة التطبيقات الوحيدة التي تم تغييرها هي واجهات برمجة التطبيقات الخاصة بالمترجم والتي تتطلّب موافقة صريحة. (I7afd2، b/158123185)
إزالة طرق الجدولة من EmbeddingContext (I7b9be)
تم إيقاف onPreCommit نهائيًا، وأصبح onCommit يتضمّن السلوك السابق لـ onPreCommit.
يتم الآن تنفيذ onCommit وonActive في إطار المنسّق نفسه الذي تم فيه تنفيذ تغييرات التركيب، بدلاً من تنفيذهما في بداية إطار المنسّق التالي. (I70403)
الإصدار 1.0.0-alpha01
26 آب (أغسطس) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha01. يتضمّن الإصدار 1.0.0-alpha01 هذه التعديلات.
الإصدار 0.1.0-dev
الإصدار 0.1.0-dev17
19 آب (أغسطس) 2020
تم طرح androidx.compose.runtime:runtime-*:0.1.0-dev17. يتضمّن الإصدار 0.1.0-dev17 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يمكن الآن أن تحدّد عمليات الإرسال المخصّصة أنّه يمكن تخطّي دالة تحديد القيمة واحدة أو أكثر وإعادة التكوين بشكل مستقل عن عملية الإرسال. (Ibbd13)
تمت إزالة طلبات FrameManager المتوقّفة نهائيًا.
تم تغيير واجهات برمجة التطبيقات الداخلية الخاصة بـ Compose لتقليل مقدار النفقات العامة اللازمة لتتبُّع عناصر الحالة، مثل
mutableStateof()(I80ba6)تم الآن إيقاف الدالة المركّبة
state { ... }نهائيًا، وسيتم استخدام استدعاءات صريحة إلىremember { mutableStateOf(...) }بدلاً منه لتوضيح الغرض. يقلّل ذلك من مساحة واجهة برمجة التطبيقات الإجمالية وعدد المفاهيم الخاصة بإدارة الحالة، ويتوافق مع نمطby mutableStateOf()لتفويض سمات الفئة. (Ia5727)تحدّد الدالة Flow.collectAsState الآن أداة الإرسال التلقائية من التركيب نفسه بدلاً من استخدام Dispatchers.Main كقيمة تلقائية. (I9c1d9)
تم إصلاح مشكلة تعذُّر التطبيق عند استخدام عنصر يحفظ الحالة داخل حلقة for. أصبح من المسموح به الآن استخدام المفتاح نفسه في savedInstanceState()، وتم تعديل واجهة برمجة التطبيقات UiSavedStateRegistry لتتوافق مع هذا الشرط الجديد (I4ab76 وb/160042650 وb/156853976 وb/159026663 وb/154920561).
إصلاح الأخطاء
- تم إيقاف
emitViewنهائيًا. استخدِمAndroidViewبدلاً من ذلك إذا كان ذلك ممكنًا لعرض طرق العرض داخل Compose. يُرجى العِلم أنّه لن يكون من الممكن في المستقبل إنشاء طرق عرض وViewGroup مباشرةً إلا إذا كانت هذه العناصر عبارة عن أوراق في شجرة الإنشاء، وفي هذه الحالة يمكن تحقيق ذلك باستخدام AndroidView. (I29b1e، b/163871221)
الإصدار 0.1.0-dev16
5 آب (أغسطس) 2020
تم طرح androidx.compose.runtime:runtime-*:0.1.0-dev16. يتضمّن الإصدار 0.1.0-dev16 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
تم تغيير سياسة التعديل التلقائية الخاصة بـ
mutableStateOf()وambientOf()وsavedInstanceStateOf()لتصبحstructuralEqualityPolicy()بدلاً منreferentialEqualityPolicy().إنّ الإعداد التلقائي لتحديد ما إذا كانت القيمة الجديدة التي تم تعيينها لمثيل
mutableStateOf()تُعدّ تغييرًا هو الآن استخدام==بدلاً من===.يمكنك الانتقال إلى https://kotlinlang.org/docs/reference/equality.html
تستخدم
ambientOf()وsavedInstanceStateOf()mutableStateOf()في عمليات التنفيذ، لذا تم تغييرها لتتوافق معmutableStateOf().يؤدي استخدام المساواة البنيوية إلى تطابق أكبر مع توقعات المطوّرين.
على سبيل المثال:
val state = mutableStateOf(1f)يليها،
state.value = 1fلن يُعدّ ذلك تغييرًا في
state، ولن يكون من الضروري إعادة إنشاءstateعند استخدامه في إنشاء مقطوعة موسيقية.هذا تغيير غير متوافق مع الإصدارات السابقة، ولكن في معظم الحالات (مثل استخدام الفئات التي لا تتجاوز
equals())، لن يكون له تأثير ملحوظ على التطبيق.قد تشهد الفئات التي تتجاوز
equals()، مثل فئاتdata، انخفاضًا في الأداء لأنّه يتم الآن، بشكل تلقائي، استدعاء طرقequals()الخاصة بها عند تعيينها إلىmutableStateOf().يمكن استعادة السلوك السابق من خلال إضافة المَعلمة policy
policy = referentialEqualityPolicy()إلى طلباتmutableStateOf()وambientOf()وsavedInstanceStateOf(). (Ic21a7)أصبحت الدالتان
RowوColumnالآن دالتين مضمّنتين، ما يقلّل بشكل كبير من تكلفة استخدامهما. (I75c10)
إصلاح الأخطاء
- تم إيقاف setViewContent نهائيًا، ويجب استخدام setContent بدلاً منها. (I7e497، b/160335130)
تمت إضافة MonotonicFrameAnimationClock التي تتيح لك استخدام MonotonicFrameClock كـ AnimationClockObservable لسد الفجوة بين الساعات الجديدة المستندة إلى الروتينات المشتركة وواجهات برمجة التطبيقات التي لا تزال تستخدم الساعات القديمة المستندة إلى عمليات معاودة الاستدعاء.
أصبح MonotonicFrameClock مكافئًا لـ ManualAnimationClock، وهو الآن ManualFrameClock. (I111c7، b/161247083)
تمت إعادة تصميم Modifier.stateDraggable بالكامل وإعادة تسميته إلى Modifier.swipeable. تم تقديم فئة SwipeableState جديدة، وتمت إعادة تصميم DrawerState وBottomDrawerState لكي يتم اشتقاقها منها. لم يعُد بإمكان [Modal/Bottom]DrawerLayout استخدام المَعلمة onStateChange. (I72332، b/148023068)
تم إيقاف Modifier.plus نهائيًا، يُرجى استخدام Modifier.then بدلاً من ذلك. توفّر الكلمة "ثم" إشارة أقوى للترتيب، كما أنّها تحظر كتابة
Modifier.padding().background() + anotherModifier، ما يؤدي إلى كسر السلسلة ويصعّب قراءتها (Iedd58، b/161529964).تمت إضافة SubcomposeLayout. وهي عنصر أساسي منخفض المستوى يسمح بإنشاء العناصر الفرعية أثناء القياس إذا أردنا استخدام بعض القيم التي تتوفّر لاحقًا فقط أثناء القياس لإنشاء الشجرة الفرعية. على سبيل المثال، لم يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
تمت إعادة تسمية Material FilledTextField إلى TextField، وإعادة تسمية TextField الأساسي إلى BaseTextField لتسهيل العثور على أبسط واجهة برمجة تطبيقات مطلوبة واستخدامها (Ia6242، b/155482676)
تمت إعادة تسمية Modifier.drawBackground إلى Modifier.background (I13677)
الإصدار 0.1.0-dev15
22 تموز (يوليو) 2020
تم طرح androidx.compose.runtime:runtime-*:0.1.0-dev15. يتضمّن الإصدار 0.1.0-dev15 هذه التعديلات.
تعديل التبعيات
- لاستخدام إصدار
0.1.0-dev15من Compose، عليك تعديل التبعيات وفقًا لمقتطفات الرموز الجديدة الموضّحة أعلاه في تعريف التبعيات.
تغييرات واجهة برمجة التطبيقات
تم إيقاف التعليق التوضيحي
@Modelنهائيًا. استخدِم state وmutableStateOf كبدائل. تم اتّخاذ قرار الإيقاف النهائي هذا بعد مناقشة متأنية.التبرير
تشمل الأسباب على سبيل المثال لا الحصر:
- تقليل مساحة واجهة برمجة التطبيقات والمفاهيم التي نحتاج إلى شرحها
- يتوافق بشكل أكبر مع مجموعات الأدوات المشابهة الأخرى (Swift UI وReact وFlutter)
- قرار يمكن التراجع عنه يمكننا إعادة
@Modelلاحقًا في أي وقت. - إزالة حالات الاستخدام النادرة والأسئلة الصعبة التي يجب الإجابة عنها بشأن إعداد
@Model - فئات بيانات
@Model، وعلامات المساواة، ورموز التجزئة، وما إلى ذلك - كيف يمكنني إعداد بعض المواقع لتكون "مراقَبة" والبعض الآخر لا؟
- كيف يمكنني تحديد المساواة البنيوية مقابل المساواة المرجعية لاستخدامها في المراقبة؟
- تقليل "السحر" في النظام سيؤدي ذلك إلى تقليل احتمالية افتراض المستخدم أنّ النظام أكثر ذكاءً مما هو عليه (أي أنّه يعرف كيفية مقارنة قائمة).
- يجعل مستوى التفاصيل في الملاحظة أكثر سهولة.
- تحسين إمكانية إعادة البناء من متغير إلى سمة في الفئة
- قد يتيح ذلك إمكانية إجراء تحسينات مخصّصة لكل ولاية
- تتوافق بشكل أكبر مع بقية المنظومة المتكاملة وتقلّل من الغموض بشأن البيانات غير القابلة للتغيير أو "اعتماد الحالة القابلة للتغيير"
ملاحظات حول نقل البيانات
يمكن تحويل جميع الاستخدامات الحالية تقريبًا للرمز
@Modelبطريقتَين بسيطتَين. يحتوي المثال أدناه على فئة@Modelتتضمّن سمتَين فقط لأغراض توضيحية، ويتم استخدامها في دالة مركّبة.@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }الحلّ البديل 1: استخدام
State<OriginalClass>وإنشاء نُسخويسهّل استخدام فئات البيانات في Kotlin اتّباع هذا النهج. في الأساس، يجب تحويل جميع الخصائص
varالسابقة إلى خصائصvalلفئة البيانات، ثم استخدامstateبدلاً منremember، وتعيين قيمة الحالة إلى نُسخ مستنسخة من الأصل باستخدام طريقةcopy(...)المريحة لفئة البيانات.من المهم ملاحظة أنّ هذا الأسلوب لا يعمل إلا عندما تكون التغييرات الوحيدة التي تم إجراؤها على هذه الفئة في النطاق نفسه الذي تم فيه إنشاء مثيل
State. إذا كان الصف يغيّر حالته داخليًا خارج نطاق الاستخدام، وكنت تعتمد على مراقبة ذلك، فإنّ الطريقة التالية هي التي عليك استخدامها.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }البديل 2: استخدام mutableStateOf ووسيطات السمات
يتم تسهيل هذا الأسلوب باستخدام عناصر تفويض الخصائص في Kotlin وواجهة برمجة التطبيقات
mutableStateOfالتي تتيح لك إنشاء مثيلات MutableState خارج التركيب. في الأساس، استبدِل جميع خصائصvarللفئة الأصلية بخصائصvarمعmutableStateOfكعنصر تحكّم في الخاصية. ويتميّز ذلك بأنّ استخدام الفئة لن يتغيّر على الإطلاق، بل سيتغيّر فقط التنفيذ الداخلي لها. مع ذلك، لا يتطابق السلوك تمامًا مع المثال الأصلي، لأنّه يتم الآن رصد كل خاصية أو الاشتراك فيها بشكلٍ فردي، لذا قد تكون عمليات إعادة التكوين التي تظهر لك بعد إعادة الهيكلة هذه أكثر تحديدًا (وهذا أمر جيد).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }(I409e8 وb/152050010 وb/146362815 وb/146342522 وb/143413369 وb/135715219 وb/143263925 وb/139653744)
تغيير استراتيجية إنشاء الرموز البرمجية لمترجم Compose قبل هذا التغيير، كان برنامج التجميع الخاص بـ Compose يحوّل طلبات الدوال القابلة للإنشاء. من خلال هذا التغيير، نحوّل الآن نص الدالة المركّبة ونترك موقع الاتصال بدون تغيير (في الغالب).
وهذا يعني أنّ معظم منطق التواصل مع وقت تشغيل Compose يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.
يجب أن يكون هذا التغيير متوافقًا مع المصدر لجميع استخدامات Compose. لن يحتاج معظم مستخدمي Compose إلى تعديل أي رمز نتيجةً لهذا التغيير.
ولإتاحة هذا العمل، تم تغيير توقيع JVM لجميع الدوال القابلة للإنشاء. يتم تحويل دالة مركّبة تقبل مَعلمة واحدة إلى دالة تقبل 3 مَعلمات، وتكون المَعلمات الإضافية هي Composer وعدد صحيح "مفتاح" وعدد صحيح لقناع البت يُستخدم لنقل البيانات الوصفية من خلال عمليات الاستدعاء.
تحوّل Compose الآن أيضًا الوسيطات التلقائية إلى دالة مركّبة. ويتم ذلك بدون إضافة حمل زائد اصطناعي إضافي تلقائيًا إلى الدالة نفسها، لذا سيؤدي هذا التغيير إلى تحديد عدد أقل من الدوال.
في ما يلي التغييرات المعروفة والمقصودة في السلوك الناتجة عن ذلك:
- سيتم تخطّي بعض المكالمات التي لم يكن من الممكن تخطّيها في السابق
- يمكن الآن الاشتراك في التعبيرات القابلة للإنشاء في تعبيرات الوسيطة التلقائية والتعامل معها بشكل صحيح
تضمّنت هذه العملية بعض التحسينات: 1. يتم نقل نتيجة مقارنات المَعلمات من خلال الرسم البياني لعمليات الاستدعاء إلى الدوال المركّبة الأخرى. سيؤدي ذلك إلى تقليل عدد عمليات المقارنة في وقت التشغيل، وتقليل حجم جدول الفتحات، بالإضافة إلى تخطّي المزيد من الدوال القابلة للإنشاء التي لم يتم تخطّيها سابقًا. لم يعُد يتم تخزين المَعلمات التي يتم تحديدها على أنّها "ثابتة" في وقت الترجمة أو مقارنتها في وقت التشغيل. يقلّل ذلك من عدد عمليات المقارنة ويقلّل من حجم جدول الفترات الزمنية. 3- يتم استخدام بنية التحكّم في التدفق لنص الدوال لتقليل عدد المجموعات التي يتم إنشاؤها. يؤدي ذلك إلى تقليل حجم جدول المواضع ويقلّل من الجهد المطلوب من وقت التشغيل 4. لا يتم تضمين مَعلمات الإرسال والاستقبال غير المستخدَمة للدوال في تحديد ما إذا كان يمكن تخطّي الدالة إذا لم يتم استخدامها داخل نص الدالة.
كانت معظم التغييرات غير المتوافقة مخصّصة لواجهات برمجة التطبيقات التي يستهدفها المحوّل البرمجي مباشرةً، ولن يتأثّر الاستخدام العادي لـ Compose بما يلي: 1. تمت إزالة Composer::startExpr 2. تمت إزالة Composer::endExpr 3. تم إيقاف Composer::call نهائيًا 4. تمت إزالة عمليات التحميل الزائد غير المتغيرة لـ
key. استخدِم الإصدارvarargمن الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي Pivotal نهائيًا. استخدِمkeyكبديل. 6. تم تغيير ScopeUpdateScope::updateScope ليتوقّع Function3 بدلاً من Function1 7. تم تعديل restartableFunction وrestartableFunctionN لتضمين مَعلمات إضافية في وقت الترجمة (I60756، b/143464846)تمت إضافة sortWith وremoveRange إلى MutableVector (Icccf7)
تمت إضافة عمليات تنفيذ الطريقة التلقائية إلى CompositionLifecycleObserver (I24289)
يتطلّب Applier الآن طريقة clear() للتخلّص من عمليات الإنشاء (Ibe697)
تمت إضافة asMutableList() إلى MutableVector للسماح بتمريره إلى واجهة برمجة التطبيقات العامة بدون الحاجة إلى نسخ القائمة بأكملها. (I298df)
تمت إضافة rememberCoroutineScope() للحصول على CoroutineScope مُدار في التركيب لتشغيل المهام استجابةً للأحداث. (I0e264)
MutableVector هي مجموعة جديدة لا تنفّذ أيًا من واجهة Collection العادية. توفّر هذه المجموعة سرعة أكبر من المتطلبات الأخرى، وهي مخصّصة للاستخدام في عمليات التنفيذ الداخلية فقط. (I8ebd6)
تمت إزالة
StableMutableListوStableMutableMapمؤقتًا لتجنُّب حدوث مشكلة في إصدار Kotlin Compose المطلوب. ستتم إعادة طرح هذه الواجهات بعد تعديل Compose إلى إصدار من Kotlin لا يتضمّن المشكلة.أصبح
SnapshotStateListوSnapshotStateMapمتاحَين للجميع، ولكن سيتم إيقافهما نهائيًا بعد استعادةStableMutableListوStableMutableMap. (Ia7769)إضافة دالة withFrameNanos على المستوى الأعلى لتحديد توقيت الصورة المتحركة (Ie34c5)
تم إيقاف التعليق التوضيحي @Untracked نهائيًا. استبدِلها بـ @ComposableContract(tracked=false) (Id211e)
تمت إعادة تسمية RestartableFunction وواجهات برمجة التطبيقات المرتبطة بها إلى ComposableLambda وما إلى ذلك. كانت هذه الواجهات تستهدف المترجم البرمجي فقط، لذا من المفترض ألا يؤثر ذلك في التوافق على مستوى المصدر عادةً. تمت إعادة التسمية بشكل أساسي لتوضيح الغرض من هذه الفئة بشكل أفضل عند ظهورها في عمليات تتبُّع تسلسل استدعاء الدوال البرمجية (I7eb25).
لم يعُد التعليق التوضيحي @Composable صالحًا على الفئات (Ia5f02)
أصبحت
Ambient<T>الآن @Stable بدلاً من @Immutable (I0b4bb)قبل إجراء هذا التغيير، كان المكوّن الإضافي لمترجم Compose يعترض بشكل غير بسيط على طلبات المنشئات داخل دالة مركّبة إذا كان هناك (I5205a، b/158123804)
لم يعُد العنصر Recompose القابل للإنشاء تجريدًا مفيدًا. يجب أن تحدث معظم عمليات إعادة التركيب نتيجة لعمليات تعيين MutableState. بالنسبة إلى أي شيء آخر، يُنصح باستخدام الدالة
invalidateلتفعيل إعادة إنشاء النطاق الحالي. (Ifc992)لم يعُد Observe تجريدًا مفيدًا. إذا كنت بحاجة إلى تكرارها، يمكن تكرار تنفيذها من خلال إنشاء دالة مركّبة تنفّذ مَعلمة lambda قابلة للإنشاء. على سبيل المثال،
@Composable fun Observe(body: @Composable () -> Unit) = body()(I40d37)تم إيقاف @Direct نهائيًا واستبداله بـ @ComposableContract(restartable=false) (If4708)
تمت إضافة أداة ربط إلى StateFlow التي تم طرحها مؤخرًا، ما يتيح لنا ملء القيمة الأولية مسبقًا حتى لا تكون الحالة المعروضة قابلة للقيم الفارغة (I61dd8، b/156233789)
تمت إضافة محوّل لـ Flow. مثال على الاستخدام: val value by flow.collectAsState() (If2198، b/153375923)
تم نقل عوامل تشغيل تفويض السمة State [Mutable]إلى الإضافات لإتاحة تحسينات تفويض السمة في Kotlin 1.4. على المتصلين إضافة عمليات استيراد لمواصلة استخدام
by state { ... }أوby mutableStateOf(...). (I5312c)تم نقل androidx.compose.ViewComposer إلى androidx.ui.node.UiComposer تمت إزالة androidx.compose.Emittable. كانت هذه الفئة مكرّرة مع ComponentNode. تمت إزالة androidx.compose.ViewAdapters. لم تعُد هذه الميزة من حالات الاستخدام المتاحة. تم إيقاف Compose.composeInto نهائيًا. يُرجى استخدام
setContentأوsetViewContentبدلاً من ذلك. تم إيقاف نهائيًا استخدام Compose.disposeComposition. استخدِم الطريقةdisposeفيCompositionالتي تعرضهاsetContentبدلاً من ذلك. تم نقل androidx.compose.Compose.subcomposeInto إلى androidx.ui.core.subcomposeInto تمت إعادة تسمية ComponentNode#emitInsertAt إلى ComponentNode#insertAt تمت إعادة تسمية ComponentNode#emitRemoveAt إلى ComponentNode#removeAt تمت إعادة تسمية ComponentNode#emitMode إلى ComponentNode#move (Idef00)تم تعديل العلامة
ComposeFlags.COMPOSER_PARAMلتصبحtrue، ما سيؤدي إلى تغيير استراتيجية إنشاء الرموز البرمجية لمكوّن Compose الإضافي. على مستوى عالٍ، يؤدي ذلك إلى إنشاء دوال @Composable مع مَعلمة اصطناعية إضافية يتم تمريرها إلى عمليات استدعاء @Composable اللاحقة لكي يتمكّن وقت التشغيل من إدارة التنفيذ بشكلٍ سليم. هذا تغيير كبير في التوافق الثنائي، ولكن من المفترض أن يحافظ على التوافق على مستوى المصدر في جميع الاستخدامات المسموح بها لـ Compose. (I7971c)تغييرات قد تؤدي إلى أعطال في واجهة برمجة التطبيقات ambients API راجِع مستندات السجلّ و
Ambient<T>للحصول على التفاصيل (I4c7ee، b/143769776)تمت إضافة ui-livedata، وهو عنصر جديد يتضمّن أداة ربط لـ LiveData. مثال على الاستخدام: val value by liveData.observeAsState() (Ie9e8c، b/150465596)
تم إيقاف محوّلات Rx التي لا تحتوي على قيمة أولية صريحة نهائيًا. لا يكون استخدام القيمة الخالية دائمًا هو الخيار التلقائي الأفضل، على سبيل المثال، عندما يكون لديك قائمة، من الأفضل البدء باستخدام emptyList() أو أي قيمة تلقائية معقولة أخرى (I00025، b/161348384).
تمت إضافة ui-rxjava2 - عنصر جديد يتضمّن محوّلات RxJava2. مثال على الاستخدام: val value by observable.subscribeAsState() (Ifab4b، b/153369097)
يمكن الآن استخدام
savedInstanceState()مع الأنواع التي تقبل القيم الخالية (I6847f، b/153532190)تمت إضافة الدالتَين listSaver() وmapSaver() لتسهيل كتابة عناصر Saver مخصّصة (I8cf68 وb/152331508)
دالتان جديدتان: savedInstanceState() وrememberSavedInstanceState()، وهما تشبهان الدالتَين state() وremember() ولكنّهما تتضمّنان ميزة حفظ حالة مثيل (If1987، b/152025209)
إصلاح الأخطاء
- تمت إعادة تسمية
runOnIdleComposeإلىrunOnIdle(I83607) - إتاحة واجهة برمجة التطبيقات التجريبية LayoutNode (I4f2e9)
- تم إيقاف androidx.ui.foundation.TextFieldValue وandroidx.ui.input.EditorValue نهائيًا. تم أيضًا إيقاف العناصر القابلة للإنشاء TextField وFilledTextField وCoreTextField التي تستخدم هذا النوع نهائيًا. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005)
- تمت إزالة واجهة برمجة التطبيقات DrawBackground المتوقّفة نهائيًا واستبدالها بواجهات برمجة التطبيقات الخاصة بإضافة drawBackground في Modifier. تمت إعادة تصميم عمليات تنفيذ اللون والفرشاة والرسم في الخلفية لتقليل مسارات الرموز البرمجية، بالإضافة إلى إزالة شرط إنشاء Modifier كجزء من التركيب. (I0343a)
- تم تعديل واجهات برمجة التطبيقات الأعلى مستوى في Compose التي تعرض Canvas لعرض CanvasScope بدلاً من ذلك. ويؤدي ذلك إلى إزالة الحاجة إلى أن يحتفظ المستهلكون بكائنات Paint الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا بحاجة إلى الوصول إلى Canvas، يمكنهم استخدام طريقة drawCanvas الخاصة بالإضافة التي توفّر دالة رد نداء لإصدار أوامر الرسم باستخدام Canvas الأساسي. (I80afd)
- تم تغيير واجهة برمجة التطبيقات WithConstraints trailing lambda. بدلاً من مَعلمتَين، أصبح يتضمّن الآن نطاقًا للمستلِم يوفّر، بالإضافة إلى القيود وlayoutDirection، خصائص minWidth وmaxWidth وminHeight وmaxHeight بوحدات dp (I91b9a وb/149979702).
- تمت إضافة أداة تعديل المساحة المتروكة المتماثلة. (I39840)
- تم تعديل wrapContentWidth وwrapContentHeight لتوقّع محاذاة عمودية أو أفقية بدلاً من أي محاذاة. تم تعديل أداة تعديل الجاذبية لقبول المحاذاة العمودية أو الأفقية. تم تعديل الصف والعمود والحزمة لتتوافق مع عمليات المحاذاة المستمرة المخصّصة. (Ib0728)
- تمت إعادة تسمية وحدة ui-text لتصبح ui-text-core (I57dec)
- تحسين واجهة برمجة التطبيقات DrawModifier:
- تم إنشاء نطاق المتلقّي للدالة draw() ContentDrawScope
- تمت إزالة جميع المَعلمات من draw()
- تتضمّن DrawScope الواجهة نفسها التي كانت تتضمّنها CanvasScope السابقة
- يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
- تم إيقاف ColoredRect نهائيًا. يمكن استخدام
Box(Modifier.preferredSize(width, height).drawBackground(color))كبديل. (I499fa، b/152753731) - استبدال المعدِّل وعلامة الجمع بدوال إضافية للمصنع (I225e4)
- يمكن الآن الوصول إلى عناصر RowScope وColumnScope خارج Row وColumn. (I3a641)
- تمت إعادة تسمية LayoutFlexible إلى LayoutWeight. تمت إعادة تسمية المَعلمة "ضيق" إلى "ملء". (If4738)
- إضافة المَعلمة LayoutDirection إلى WithConstraints (I6d6f7)
- تمت إعادة تسمية الخلفية إلى DrawBackground وتم ضبطها على أن يتم تذكّرها تلقائيًا (Ia0bd3)
- تم استبدال ButtonStyle بوظائف مميزة وإزالة التحميل الزائد للنص (السلسلة). اطّلِع على النماذج المعدَّلة لمعلومات الاستخدام. (If63ab، b/146478620، b/146482131)
- أصبحت الدالتان
runOnIdleComposeوrunOnUiThreadالآن دالتين عامتين بدلاً من طريقتين في ComposeTestRule. (Icbe8f)
المساهمة الخارجية
- إزالة واجهة برمجة التطبيقات غير الضرورية، مثل مشّغل رسائل وHandler، من طبقة تكييف البرنامج لوقت تشغيل Compose (I6847d)
- إيقاف السمة
Flow<T>.collectAsState()بدون قيمة أولية استخدِمStateFlow<T>أو مرِّر قيمة أولية صريحة بدلاً من ذلك. (I63f98، b/157674865)