وقت تشغيل الإنشاء

الوحدات الأساسية لنموذج برمجة Compose وإدارة الحالة، ووقت التشغيل الأساسي للمكوّن الإضافي Compose Compiler لاستهدافه.
آخر تعديل الإصدار المستقر إصدار مرشح الإصدار التجريبي الإصدار الأولي
29 تشرين الثاني (نوفمبر) 2023 1.5.4 - الإصدار التجريبي 1.6.0-02 -

التركيبة

تشتمل ميزة "الإنشاء" على 7 معرّفات مجموعة Maven في androidx. تحتوي كل مجموعة على مجموعة فرعية مستهدفة من الوظائف، ولكل منها مجموعة خاصة بها من ملاحظات الإصدار.

يشرح هذا الجدول المجموعات والروابط لكل مجموعة من ملاحظات الإصدار.

مجموعةالوصف
compose.animationيمكنك إنشاء صور متحركة في تطبيقات Jetpack Compose لتحسين تجربة المستخدم.
compose.compilerيمكنك تحويل الدوال @Composable وتفعيل التحسينات باستخدام المكوِّن الإضافي لبرنامج المحول البرمجي بلغة Kotlin.
compose.foundationاكتب تطبيقات Jetpack Compose مع الوحدات الأساسية الجاهزة للاستخدام ووسِّع نطاق الأساس لإنشاء أجزاء نظام التصميم الخاصة بك.
compose.materialيمكنك إنشاء واجهات مستخدم في Jetpack Compose تتضمّن مكونات جاهزة للاستخدام. هذه هي نقطة الدخول ذات المستوى الأعلى في Compose، والتي تم تصميمها لتوفير مكوّنات تتوافق مع تلك الموضّحة في www.material.io.
compospos.material3أنشئ واجهات مستخدم في Jetpack Compose باستخدام مكونات Material Design 3، وهي التطوّر التالي للتصميم المتعدد الأبعاد. يتضمّن Material 3 تصميمات ومكوّنات محدّثة وميزات تخصيص Material You، مثل الألوان الديناميكية، وهي مصممة لتكون متناسقة مع النمط المرئي الجديد في Android 12 وواجهة مستخدم النظام.
compose.runtimeالوحدات الأساسية لنموذج برمجة Compose وإدارة الحالة، ووقت التشغيل الأساسي للمكوّن الإضافي Compose Compiler لاستهدافه.
compose.uiيلزم استخدام المكونات الأساسية لواجهة المستخدم الإنشاء للتفاعل مع الجهاز، بما في ذلك التخطيط والرسم والإدخال.

تعريف التبعيات

لإضافة تبعية إلى Compose، يجب إضافة مستودع Google Maven إلى مشروعك. يمكنك الاطّلاع على مستودع Maven الذي يضم أدوات Google للحصول على مزيد من المعلومات.

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

رائع

dependencies {
    implementation "androidx.compose.runtime:runtime:1.5.4"
    implementation "androidx.compose.runtime:runtime-livedata:1.5.4"
    implementation "androidx.compose.runtime:runtime-rxjava2:1.5.4"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.5"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

لغة Kotlin

dependencies {
    implementation("androidx.compose.runtime:runtime:1.5.4")
    implementation("androidx.compose.runtime:runtime-livedata:1.5.4")
    implementation("androidx.compose.runtime:runtime-rxjava2:1.5.4")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.5"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

ملاحظات

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

إنشاء عدد جديد

راجع مستندات أداة تتبُّع المشاكل للحصول على مزيد من المعلومات.

الإصدار 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 على هذه الالتزامات.

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

  • تم تثبيت الاعتماديات على الإصدارات الثابتة المتوافقة (أي وقت تشغيل الإنشاء وتتبُّع الأداء): إصلاح مشكلة تتعلّق بتتبُّع وقت تشغيل الإنشاء يؤدي إلى ظهور إصدار أحدث من وقت تشغيل الإنشاء في التطبيق.

الإصدار 1.0.0-alpha04

23 آب (أغسطس) 2023

تم إصدار "androidx.compose.runtime:runtime-tracing:1.0.0-alpha04". يحتوي الإصدار 1.0.0-alpha04 على هذه الالتزامات.

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

  • يتوافق التطبيق مع أحدث إصدارات مقياس الأداء وتطبيق Perfetto، ما يوفّر إمكانية استخدام ميزة "تتبُّع المقطوعة الموسيقية" عند بدء تشغيل التطبيق (بدايةً على البارد)، مثلاً في مقياس AndroidX و"استوديو Android" (بدءًا من إصدار Hedgehog Beta 2).

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

  • تمت إعادة تسمية androidx.tracing.perfetto.Trace إلى androidx.tracing.perfetto.PerfettoSdkTrace. (I44af8)
  • جعل تتبُّع Perfetto SDK لواجهات برمجة التطبيقات المتوافقة مع 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.6

الإصدار 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)
  • منع الالتقاط بدون قصد (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 إلا عند تخزينها في عملية تذكُّر الحساب. (f6b4dc)
  • تحسين عمليات التوزيع في ترتيب قوائم عمليات الإلغاء (954d63)
  • استخدام الخرائط الجديدة التي لا يتم تخصيصها في SnapshotStateObserver (4303ce)
  • محو عمليات الإلغاء عند إيقاف المقطوعة الموسيقية (e001be)

الإصدار 1.6.0-alpha07

4 تشرين الأول (أكتوبر) 2023

تم إصدار "androidx.compose.runtime:runtime-*:1.6.0-alpha07". يحتوي الإصدار 1.6.0-alpha07 على هذه الالتزامات.

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

  • تم الآن وضع علامة RandomAccess على SnapshotStateList لتفعيل إصدار الفهرسة المباشر لأدوات مساعدة القائمة. (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 قيمة فارغة (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
  • إصلاح العلامات التي تم تغييرها لـ lambdas التي تمت إعادة تشغيلها (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() إلى الأنواع المتخصّصة المقابلة لها في المجموعة الأولية. معرِّف لينت هو AutoboxingStateCreation. في السابق، كان يتم تفعيل هذا الفحص تلقائيًا لجميع المشاريع. للاطّلاع على هذا التحذير في محرِّر "استوديو Android" ونتائج المحتوى غير المرغوب فيه الخاصة بمشروعك، عليك تغيير درجة الخطورة من "حالة" إلى تحذير (أو أعلى) من خلال تعريف السمة warning "AutoboxingStateCreation" ضمن إعدادات Build.grale أو Build.grale.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 لمراقبة دورة حياة عُقد الإنشاء. 8b6a258
  • إضافة السمة "parameterTypes" إلى ComposableMethod 7b6c7ad

إصلاح الأخطاء وتحسينات على الأداء

  • محو فهرسَي النطاقات في SnapshotStateObserver 29f4a3e
  • إضافة المجموعات المطلوبة في نص lambdas غير القابلة للتخطي 7d06752
  • تحسين خصائص المرجع في الذاكرة لحالة اللقطة 93fcae8
  • إزالة الملاكمة في عمليات البحث المحلي 0875717
  • استخدِم المفتاح الصحيح لمجموعات العُقد غير القابلة لإعادة الاستخدام 6388d8d.
  • حماية SnapshotStateObserver من التطبيقات التكرارية والمتزامنة مع 98cb6ba
  • تمت إضافة فحص لحدود فهرس الاختبار في طريقة "get" IdentityArraySet 35a77d3.
  • تحديث وحدة الإنشاء لاستخدام إضافات ViewTreeLifecycleOwner 21c2122
  • إرسال إشعارات التطبيق بعد انتهاء إعادة إنشاء الإطار 98f2641
  • إصلاح تعطُّل الفهرس خارج الحدود عند إلغاء إعادة التركيب 8f8656f
  • فرض إعادة الإنشاء دائمًا إذا غيّر مقدّمو الخدمات الرئيسيون للمقطوعة الموسيقية 9526fcc
  • التساهل مع أداة إعادة الضبط للوظائف الملغاة 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 مما يسمح بمراقبة دورة حياة عُقد الإنشاء (I3731b).
  • تمت إضافة @TestOnly إلى Composer.disableSourceInformation()، لأنّ هذه الدالة آمنة فقط للاتصال بها في اختبار. (I896c8)

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

  • إزالة الملاكمة في عمليات البحث المحلي للمقطوعات الموسيقية (62f66a)
  • تحسين خصائص مرجع الذاكرة لحالة لقطة (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

تشرين الثاني (نوفمبر) 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 على هذه الالتزامات.

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

  • تم الآن تنفيذ toList() وtoMap() بشكل واضح لكل من SnapshotStateList وSnapshotStateMap، وباحترام. تعرِض هذه الطرق المحتوى الحالي بدون إجراء نسخة عند عرض البيانات الداخلية غير القابلة للتغيير المستخدَمة في تخزين المحتوى. يمكن استخدام هذه القيمة، على سبيل المثال، لإنشاء تدفق من القيم باستخدام 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 هذه الالتزامات.

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

  • تم تحديثه ليتوافق مع الإصدار androidx.compose.ui 1.3.2

الإصدار 1.3.1

تشرين الثاني (نوفمبر) 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

التعامل مع الاستثناء / الدعم المباشر للتعديل

تتبُّع المقطوعات الموسيقية

واجهات برمجة تطبيقات التأمل القابلة للإنشاء

إصلاحات في وقت التشغيل

نظام اللقطات

الإصدار 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

  • اشتمل وقت تشغيل Compose على مجموعة من الميزات التي تم تقديمها في الإصدار 1.2.0، بالإضافة إلى العديد من إصلاحات الأخطاء المتعلقة بالتثبيت. كانت أهم ميزة جديدة هي مقدمة عن movableContentOfواجهة برمجة التطبيقات، والتي يمكن استخدامها لتفعيل تجربة المستخدم المعقّدة، مثل عمليات انتقال العناصر المشتركة. تحوِّل واجهة برمجة التطبيقات movableContentOf دالة lambda المركبة إلى دالة lambda التي تنقل حالتها والعُقد المقابلة إلى أي موضع جديد يتم استدعائها. عندما تغادر الاستدعاء السابقة التركيبة، يتم الاحتفاظ بالحالة مؤقتًا وإذا دخلت استدعاء جديد إلى lambda، فتنتقل الحالة والعُقد المرتبطة بها إلى موقع الاستدعاء الجديد. في حال عدم إضافة مكالمة جديدة، تتم إزالة الحالة نهائيًا وتذكّر أنّه يتم إشعار المراقبين.

  • إذا تم استدعاء دالة movableContentOf lambda عدة مرات في التركيبة نفسها، يتم إنشاء حالة وعُقد جديدة لكل استدعاء، وعندما تغادر المكالمات التركيبة وتدخل المكالمات الجديدة، يتم نقل الحالة من الطلبات المغادِرة الأولى إلى الطلبات المدخلة بترتيب استدعائها. تتم إزالة جميع الولايات التي لم تتم المطالبة بها من خلال المكالمات الجديدة نهائيًا.

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

  • يمكن الاطّلاع على قائمة مختصرة بالتغييرات في ما يلي:

ميزات جديدة في 1.2

الأداء في 1.2

إصلاح الأخطاء في 1.2

الإصدار 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 على هذه الالتزامات.

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

  • تم إنشاء الواجهات في مكتبات الإنشاء الآن باستخدام طرق الواجهة الافتراضية في jdk8 (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 UI. يجب أن توفر الدالة التي تحتاج إلى استهداف تطبيق آخر بشكل صريح التعليق التوضيحي لعلامة الهدف مع التطبيق المطلوب. (I40804)

الإصدار 1.2.0-alpha08

20 نيسان (أبريل) 2022

تم إصدار "androidx.compose.runtime:runtime-*:1.2.0-alpha08". يحتوي الإصدار 1.2.0-alpha08 على هذه الالتزامات.

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

  • تمت إضافة TracingInProgress إلى واجهة CompositionTracer. (Ic6f12)
  • إضافة recomposeScopeIdentity إلى Composer (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 على هذه الالتزامات.

المساهمة الخارجية

  • تم التحديث لاستخدام الكوروتينات في Kotlinx 1.6.0 (I3366d).

الإصدار 1.2.0-alpha04

23 شباط (فبراير) 2022

تم إصدار "androidx.compose.runtime:runtime-*:1.2.0-alpha04". يحتوي الإصدار 1.2.0-alpha04 على هذه الالتزامات.

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

  • تمت إضافة ComposableTarget وComposableTargetMarker وComposableOpenTarget، وهي ميزة تتيح إعداد تقارير وقت التجميع للحالات التي تُسمّى فيها وظيفة قابلة للتكوين استهداف تطبيق لم يتم تصميمه لاستخدامه.

    في معظم الحالات، يمكن استنتاج التعليقات التوضيحية بواسطة المكوِّن الإضافي لإنشاء التجميع، لذا يجب أن يكون استخدام هذه التعليقات التوضيحية مباشرةً نادر الحدوث . والحالات التي لا يمكن استنتاجها تشمل إنشاء واستخدام محرِّر مخصّص أو دوال مجرّدة قابلة للتعديل (مثل طرق الواجهة) أو حقول أو متغيرات عمومية يمكن إنشاؤها (يتم استنتاج المتغيرات والمعلَمات المحلية) أو عند استخدام ComposeNode أو دوال ذات صلة قابلة للتعديل.

    بالنسبة إلى التطبيقات المخصّصة، يجب إضافة تعليق توضيحي بشأن CompoableTarget الدوال القابلة للتعديل والتي تستدعي ComposeNode أو ReusableComposeNode للدالة وأي أنواع من مَعلمات lambda مجمَّعة. ونقترح عليك مع ذلك إنشاء تعليق توضيحي يتضمن تعليقات توضيحية باستخدام ComposableTargetMarker، ثم يتم استخدام التعليق التوضيحي الذي تم وضع علامة عليه بدلاً من ComposableTarget مباشرةً. إنّ التعليق التوضيحي القابل للإنشاء الذي تم وضع علامة ComposableTargetMarker عليه يساوي ComposbleTarget الذي يحمل اسمًا مؤهلاً بالكامل لفئة السمة كمَعلمة applier. للاطّلاع على مثال على استخدام 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 التي تنقل حالتها والعُقد المقابلة لها، إلى أي موقع جديد يتم استدعائها. عندما تغادر المكالمة السابقة المقطوعة الموسيقية، يتم الاحتفاظ بالحالة مؤقتًا وإذا دخلت مكالمة جديدة إلى دالة lambda، يتم نقل الحالة والعُقد المرتبطة بها إلى موقع المكالمة الجديدة. إذا لم تتم إضافة مكالمة جديدة، تتم إزالة الحالة نهائيًا وتذكر أنه يتم إبلاغ المراقبين.

    إذا تم استدعاء دالة movableContentOf lambda عدة مرات في البنية نفسها، يتم إنشاء حالة وعُقد جديدة لكل استدعاء، وعندما تخرج المكالمات من التركيبة وتدخل المكالمات الجديدة، يتم نقل الحالة من أول استدعاءات الخروج إلى الطلبات المدخلة بترتيب استدعائها. تتم إزالة جميع الولايات التي لم تتم المطالبة بها من خلال المكالمات الجديدة نهائيًا. (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)

تعديلات التبعية

  • تعتمد هذه الطريقة الآن على لغة 1.6.10 في لغة البرمجة Kotlin.

الإصدار 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)
  • تنسيق RTL ثابت في 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
  • تحسينات على تحديد حجم مساحة اللمس
  • تجدر الإشارة إلى أنّه في ما يتعلّق بـ Compose 1.0، ستوسِّع مكوّنات Material من مساحة التنسيق الخاصة بها لاستيفاء إرشادات إمكانية الوصول المتعلّقة بمواد العرض حجم هدف اللمس. على سبيل المثال، سيتم توسيع هدف لمس الزر إلى أدنى حجم يبلغ 48x48dp، حتى في حال ضبط حجم الزر ليكون أصغر. يؤدي هذا إلى مواءمة Compose Material مع السلوك نفسه لمكونات التصميم المتعدد الأبعاد، مما يوفر سلوكًا متسقًا إذا قمت بمزج طرق العرض والإنشاء. ويضمن هذا التغيير أيضًا استيفاء الحد الأدنى من متطلبات إمكانية الوصول إلى مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكونات مادة الإنشاء.
  • دعم ثابت لشريط التنقل
  • تم ترقية عدد من واجهات برمجة التطبيقات التجريبية سابقًا إلى القناة الثابتة
  • الدعم مع الإصدارات الأحدث من لغة Kotlin

الإصدار 1.1.0-rc03

26 يناير 2022

تم إصدار "androidx.compose.runtime:runtime-*:1.1.0-rc03". يحتوي الإصدار 1.1.0-rc03 على هذه الالتزامات.

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

  • تم التعديل لإتاحة إنشاء المادة 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 على هذه الالتزامات.

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

  • يدعم الآن أداة إنشاء النصوص البرمجية الإصدارات الأقدم من وقت تشغيل الإنشاء (1.0). قبل إجراء هذا التغيير، كانت أداة تجميع Compose متوافقة فقط مع وقت تشغيل الإنشاء من نفس الإصدار أو الإصدارات الأحدث. بعد هذا التغيير، تتوافق أداة Compose Compiler مع إصدار أقدم من وقت تشغيل Compose (1.0). (aosp/1796968)
  • تم تعديل ميزة الإنشاء 1.1.0-alpha03 للاعتماد على لغة البرمجة 1.5.30 في Kotlin. (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 على هذه الالتزامات.

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

  • تم إصلاح مثيلاتStateOf المستمَدة من تتبُّع الأعطال. (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 على هذه الالتزامات.

تم التعديل للتوافق مع إصدار الإنشاء 1.0.2. لا يزال إنشاء 1.0.2 متوافقًا مع لغة البرمجة 1.5.21 بلغة Kotlin.

الإصدار 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 الرسمية للحصول على مزيد من التفاصيل.

المشاكل المعروفة

  • إذا كنت تستخدم Android Studio Bumblebee Canary 4 أو AGP 7.1.0-alpha04/7.1.0-alpha05، قد تواجه العطل التالي:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    لحلّ هذه المشكلة، عليك زيادة minSdkVersion مؤقتًا إلى 24 أو أكثر في ملف build.gradle. سيتم حلّ هذه المشكلة في الإصدار التالي من "استوديو Android" Bumblebee وAGP 7.1. (b/194289155)

الإصدار 1.0.0-rc02

14 تموز (يوليو) 2021

تم إصدار "androidx.compose.runtime:runtime-*:1.0.0-rc02". يحتوي الإصدار 1.0.0-rc02 على هذه الالتزامات.

  • تم إصلاح حالات السباق في SnapshotStateMonitorer التي تسبب الخطأ NullPointerExceptions. (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-Formatting
  • 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 للإشارة إلى ما إذا كان يجب وضع علامة على هذه الطريقة باعتبارها "Hot" أو "Startup" (بدء التشغيل) أو "Post Startup" (بدء التشغيل).

  • تمثّل السمة <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 هذه الالتزامات.

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

  • تمت إضافة واجهات برمجة تطبيقات جديدة لأداة التحويل البرمجي للإنشاء تسمح بإزالة معلومات المصدر التي تم إنشاؤها بواسطة المحوِّل البرمجي أثناء تصغير المصدر. (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 متوافقة الآن مع الإصدار 12 من نظام التشغيل Android (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) } عند استخدامها داخل وجهة إنشاء التنقل. (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 التجريبي.

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

  • أضِف Recomposer.runRecomposeConcurrentlyAndApplyChanges واجهة برمجة تطبيقات تجريبية لإعادة إنشاء المقطوعات الموسيقية التي تم إبطال صلاحيتها من حلقة الإطار الرئيسي. (I342d0)
  • يتم الآن التحقُّق من وقت التجميع في أي عناصر قابلة للتجميع تم وضع علامة @ReadOnlyComposable عليها لضمان أنّها لا تجري سوى مكالمات إلى عناصر @ReadOnlyComposables الأخرى (I58961).
  • إنّ السمة defaultFactory في compositionLocalOf وstaticCompositionLocalOf مطلوبة الآن بدلاً من أنّها اختيارية.

    تؤدي هذه التغييرات إلى إزالة خطأ النوع المحتمل للأنواع غير القابلة للقيم التي لم يتم توفير مصنع تلقائي فيها. كان هذا في السابق يوفر مرجعًا فارغًا لنوع غير قابل للقيم الفارغة.

    بالنسبة إلى الأنواع القابلة للقيم الفارغة، يمكنك تقديم { null } كمعامل تلقائي.

    لا ننصح باستخدام الأنواع المحلية غير القابلة للقيم الفارغة ما لم يتم توفير طريقة تلقائية معقولة. في حال عدم توفُّر إعدادات تلقائية معقولة، يجب أن تعرض دالة defaultFactory lambda استثناء. ومع ذلك، فإنّ طرح استثناء يعني أنّ المستهلكين المحليين سيعتمدون بشكل ضمني على المنتجات التي يتم تقديمها ولا يتم فرضها من خلال نظام النوع. (Ifbd2a)

  • تمت إزالة الرموز التي تم إيقافها نهائيًا من وقت تشغيل الإنشاء (I3252c).

  • تمت إزالة emptyContent() المتوقف نهائيًا. يمكنك استخدام {} كبديل. (Idb33f، b/179432510)

  • تمت إعادة تسمية مقدّمي الخدمات إلى MembershipLocalProvider.

    • لم تعُد الدالة الإنشائية للمقطوعة الموسيقية تقبل مَعلمة رئيسية، وقد تم إيقافها نهائيًا.
    • تم تحويل ترميز Currents المُركّب إلى سمة من المستوى الأعلى بدلاً من دالة المستوى الأعلى المركّبة.
    • تم نقل بيانات التركيبة والمقطوعة الموسيقية إلى مساحة الاسم androidx.compose.runtime.tooling.
    • تم تصميم ComposableLambda كواجهة بدلًا من فئة ملموسة، ولم تعد تحتوي على معلمات النوع.
    • تم تصميم ComposableLambdaN كواجهة بدلًا من فئة ملموسة، ولم تعد تحتوي على معلمات النوع.
    • تم نقل دالة drawFlow إلى مساحة الاسم androidx.compose.runtime.
    • لم تعُد طريقة دمج SnapshotMutationPolicy تجريبية
    • تمت إزالة دالة @TestOnly في المستوى الأعلى clearRoots. لم يعد من الضروري.
    • تمت إزالة الدالتين keySourceInfoOf وresetSourceInfo. لم تعد ضرورية.
    • تمت إزالة Composer.collectKeySourceInformation. لم يعد من الضروري.
    • تمت إزالة طرق isJoinedKey وjoinKeyLeft وjoinKeyRight. لم تعد ضرورية.
    • تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. ونظرًا لدلالات فئة ملف Kotlin، سيؤدي ذلك إلى إيقاف التوافق الثنائي وليس توافق المصدر، لذلك من المفترض ألا تكون مشكلة بالنسبة إلى معظم المستخدمين.
    • (I99b7d، b/177245490)
  • لم يعُد SnapshotStateMonitorer تجريبيًا بعد الآن (Id2e6a)

  • حذف بعض واجهات برمجة التطبيقات التي تم إيقافها سابقًا (Ice5da، b/178633932)

  • تم إجراء التغييرات التالية في Material API:

    • تمت إضافة مَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص المساحة المتروكة التلقائية.
    • المَعلمات المُعاد ترتيبها في BackdropScaffold لاتّباع إرشادات واجهة برمجة التطبيقات للمعلَمات المطلوبة التي تكون قبل المَعلمات الاختيارية.
    • تم نقل المعلَمة icon في BottomالتنقلItem إلى ما بعد selected وonClick.
    • تمت إعادة تسمية المعلَمة alwaysShowLabels في Bottom NavigationItem إلى 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)
  • تمت إعادة تسمية التركيبة الموسيقية إلى تكوين Context (I53fcb).
  • تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في وحدة androidx.activity:activity-compose. (Icf416)
  • تم تحديث Snapshot API ليكون أكثر تناسقًا مع إرشادات واجهة برمجة التطبيقات، بالإضافة إلى إخفاء فئات التنفيذ الداخلية من واجهة برمجة التطبيقات العامة. (Id9e32)
  • تمت إعادة تسمية "وضع الإضاءة السينمائية" لتتناسب مع إعادة تسمية "وضع الاستراحة" -> تكوين محلية. كان يُطلق اسم "أمبيانت" على البيئة المحيطة، أما الآن يُطلق اسم EnvironmentLocals على اسم LocalFoo. (I2d55d)
  • تمت إعادة تسمية "بي أم بي" لتصبح "مقطوعة موسيقية"، و"أجواءفو من / ثابت نافيمن" إلى "التركيبة المحلية من / ثابت التركيبة" على التوالي. من خلال إجراء هذا التغيير، بات الغرض من استخدام AnalyzeLocal أكثر وضوحًا من خلال توفير آلية لتقديم أو استرداد القيم المحلية في مقطوعة موسيقية معيّنة. يجب أن تبدأ المثيلات المحلية من MaterialFoo بـ Local، مثل val LocalFoo = composeLocalOf { Foo() }. (Ia55b6)
  • وأخذ عيّنة (I91f19)
  • تم إيقاف واجهة برمجة التطبيقات @ComposableContract نهائيًا ليحلّ محلّها ثلاثة تعليقات توضيحية أكثر تحديدًا.

    أصبح @ComposableContract(restartable = false) @NonRestartableComposable @ComposableContract(readonly = true) أصبح @ReadOnlyComposable @ComposableContract(preventCapture = true) تمت إزالة @DisallowComposableCalls @ComposableContract(tracked = true). (I60a9d)

  • تم إيقاف الأدوات المساعدة الفارغةContent() و (@Composable () -> Unit).orفارغ() لأنّه لم تعُد لها أي قيمة أو تأثير إيجابي في الأداء (I0484d).

  • لم يعُد snapshotFlow وwithMutableSnapshot تجريبيَين (I6a45f).

  • يمكن الآن إغلاق أدوات إعادة الضبط. ستستمر أدوات إعادة الإنشاء المغلقة في إعادة الإنشاء حتى اكتمال تكوين الكوروتينات الثانوية. تمت إعادة تسمية Recomposer.shutDown لإلغاء التبديل مع وضع الإغلاق. (Ib6d76)

  • تم إيقاف عنصر compose:runtime-dispatch نهائيًا. يمكن الآن العثور على MonotonicFrameClock في الحقل compose:runtime ويمكن العثور على AndroidUiDispatcher في compose:ui. (Ib5c36)

  • تمت إعادة هيكلة واجهة برمجة التطبيقات التي يستهدفها المكوِّن الإضافي Compose لاستخدام واجهة بدلاً من فئة ملموسة. لم تعد الواجهة تستخدم معلمة type بعد الآن.

    هذا تغيير داخلي من المفترض ألا يؤثر في توافق رمز المصدر ولكنه تغيير عطل ثنائي. (I3b922، b/169406779)

  • تم تقديم SnapshotMutableState (Icfd03)

  • تمت إعادة تسمية DisposaleEffectDisposable إلى DisposaleEffectResult (Ica7c6)

  • تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم ضبطه تلقائيًا على أدوات إعادة الإنشاء التي تم إنشاؤها باستخدام طريقة كسول والتي يتم إنشاؤها على نطاق النافذة استنادًا إلى ViewTreeLifecycleOwner للنافذة. يتم إيقاف علامات الرسوم المتحركة المستندة إلى FrameNanos وإعادة الإنشاء مؤقتًا أثناء إيقاف دورة حياة المضيف. (I38e11)

  • توفّر Recomposer.runningRecomposers الآن حالة عامة على StateFlow من نوع RecomposerInfo المخصصة للقراءة فقط لمراقبة حالة الإنشاء المستمرة في العملية. أفضّل واجهة برمجة التطبيقات هذه على Recomposer.current() ، والتي تم إيقافها الآن. (If8ebe)

  • تمت إعادة تسمية DisposaleEffectDisposable إلى DisposaleEffectResult (I3ea68)

الإصدار 1.0.0-alpha11

28 كانون الثاني (يناير) 2021

تم إصدار "androidx.compose.runtime:runtime-*:1.0.0-alpha11". يحتوي الإصدار 1.0.0-alpha11 على هذه الالتزامات.

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

  • تم إيقاف onCommit وonDispose وonActive لتصبح واجهات برمجة تطبيقات SideEffect وDeposableEffect (If760e)
  • تم إيقاف واجهة برمجة التطبيقات emit() وجميع الأعباء الزائدة وإعادة تسميتها إلى ComposeNode. واجهات برمجة التطبيقات متطابقة، ولكن ليس لها سوى اسم مختلف لاتّباع اصطلاحات التسمية في Compose (I4137b).
  • تم الآن إيقاف الحلّ المستقل والمؤلف من () الدمج ()) الحاليَين لصالح العنصرَين الحاليَّين الحاليَين (currentRecomposeScope) و"تذكُّر حساب التركيب" ( باعث) على التوالي. (I583a8)
  • يحلّ محل SpeakMonitorer محلّ AssessLifecycleMonitorer وتم الآن إيقاف سيطرته AssessLifecycleMonitorer نهائيًا.

    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 للسماح بإعادة تدويرها طريقة العرض المستندة إلى الإنشاء، مع التخلص من المقطوعات الموسيقية لإعادة إنشائها لاحقًا أضِف واجهات برمجة تطبيقات لتثبيت "أدوات إعادة الإنشاء" و"مراجع المقطوعات الموسيقية" على مستوى النافذة واكتشافها لإنشاء مقطوعات موسيقية فرعية.

    يمكنك إضافة ViewCreationStrategy لإعداد استراتيجية التخلص من المقطوعات الموسيقية لـ [Abstract]ComposeViews؛ حيث يتم التخلص من السلوك التلقائي عند فصل النوافذ. (I860ab)

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

  • تعرض أداة إعادة الإنشاء الآن تدفقًا لحالتها الحالية، مما يسمح بمراقبة نشاطها ونشاط التأثيرات المرتبطة بها. (Ifb2b9)
  • يمكن الآن الوصول إلى keyEvent الأصلي من خلال keyEvent.localizedKeyEvent (I87c57، b/173086397)

الإصدار 1.0.0-alpha09

16 كانون الأول (ديسمبر) 2020

تم إصدار "androidx.compose.runtime:runtime-*:1.0.0-alpha09". يحتوي الإصدار 1.0.0-alpha09 على هذه الالتزامات.

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

  • تمت إزالة واجهة OpenTable وSlotReader وSlotWriter من واجهة برمجة التطبيقات العامة. تم وضع علامة عليها سابقًا على أنها internalComposeAPI سابقًا. وهي الآن داخلية في وحدة الإنشاء.

    تمت إضافة التركيبة والتكوين التركيبة لها كبديل لواجهة برمجة تطبيقات أدوات واجهة المستخدم لاستخراج معلومات حول التركيبة. وتكون هذه البيانات علنية، ولكن ليس الغرض منها استخدامها خارج واجهة برمجة تطبيقات ui-tooling، لأنّها توفر المعلومات الأولية التي تفسرها واجهة برمجة تطبيقات أداة واجهة المستخدم (I31a9c).

  • لم تعُد فئة Applier تُعتبر (Id85b0)

  • تم تغيير واجهة Applier لتبسيط بناء الأشجار من أسفل إلى أعلى بدلاً من الانتقال من الأعلى إلى الأسفل.

    تمت إعادة تسمية الطريقة insert() لتصبح insertTopDown().

    تمت إضافة طريقة جديدة، وهي insertBottomUp().

    يدرج تطبيق التطبيق العُقد في الشجرة التي يعدِّلها باستخدام insertTopDown() أو insertBottomUp() بناءً على أيهما أفضل أداءً.

    بعض الأشجار، مثل LayoutNode وView، تكون أكثر فعالية بكثير في الإنشاء من أسفل إلى أعلى من أعلى إلى أسفل. قبل هذا التغيير، كانت هناك حاجة إلى حزمة من الإدخالات لتنفيذ الإجراءات من أسفل إلى أعلى، وبالتالي كان يتعيّن نسخها إلى كل تطبيق يحتاج إلى بنية من أسفل إلى أعلى لتعزيز الأداء. بعد إجراء هذا التغيير، ستلغي Applier insertBottomUp() لتشكّل شجرة من أسفل إلى أعلى وinsertTopDown() لبناء الشجرة من أعلى إلى أسفل. (Icbdc2)

  • يدعم Compose أدوات الحصول على الخصائص التي يمكن أن تنشئ استدعاءات قابلة للإنشاء. لن يتم إيقاف هذه الميزة، ولكن ستتغيّر بنية الإعلان عن دالة getter على أنّها @Composable.

    كانت البنية التي تم إيقافها نهائيًا لإجراء ذلك هي من خلال إضافة تعليق توضيحي إلى السمة نفسها:

        @Composable val someProperty: Int get() = ...
    

    بناء الجملة الصحيح الآن للقيام بذلك هو من خلال التعليق التوضيحي على القيمة getter للخاصية:

       val someProperty: Int @Composable get() = ...
    

    ستعمل كلتا التركيبات لبعض الوقت، ولكن بناء الجملة السابق الذي تم إيقافه سيصبح في النهاية خطأ في التحويل البرمجي. (Id9197)

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

  • تم إنشاء AndroidOwner داخليًا (Ibcad0، b/170296980)
  • تم إجراء subcomposeInto(LayoutNode) داخليًا (Id724a)

الإصدار 1.0.0-alpha08

2 كانون الأول (ديسمبر) 2020

تم إصدار "androidx.compose.runtime:runtime-*:1.0.0-alpha08". يحتوي الإصدار 1.0.0-alpha08 على هذه الالتزامات.

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

  • تمت إضافة التحقق من الوبر لتحديد تسمية مَعلمات lambda وموضعها للتأكّد من توافقها مع إرشادات الإنشاء. تم أيضًا نقل بيانات بعض واجهات برمجة التطبيقات باستخدام children كاسم لدالة lambda اللاحقة إلى content، وفقًا لعمليات التحقّق من الوبر والإرشادات. (Iec48e)
  • لم تعد أداة إعادة الإنشاء تقبل embeddingContext، إذ يتم الحصول على التبعيات المطلوبة الجدولة من activityCoroutineContext. تم إيقاف FrameManager، ويجب أن تؤدي عمليات دمج النظام الأساسي إلى تهيئة معالجة اللقطات العامة. (I02369)
  • تمت إعادة تسمية الدالة RestorableStateHolder.withRestorableState إلى ا لـ RestorableStateProvider (I66640)

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

  • تم إيقاف ميزات "وضع عدم النشاط" التي تحمل اسم "Ambient" كلاحقة لها، واستبدلتها بسمات جديدة مسبوقة بعبارة "وضع عدم النشاط"، وذلك باتّباع إرشادات أخرى حول عناصر المحيط والكتابة في واجهة برمجة التطبيقات. (I33440)
  • إزالة وحدة اختبار واجهة المستخدم القديمة وملفاتها (I3a7cb)

الإصدار 1.0.0-alpha07

11 تشرين الثاني (نوفمبر) 2020

تم إصدار "androidx.compose.runtime:runtime-*:1.0.0-alpha07". يحتوي الإصدار 1.0.0-alpha07 على هذه الالتزامات.

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

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

  • تم إيقاف تعليق @UnionType التوضيحي (I57cde).
  • تمت إضافة معلمة توفير افتراضية كبديل لتوفير الإضاءة المحيطة، ويمكن استخدامها لتحديد القيم المحيطة التي سيتم ضبطها فقط عند عدم تحديد قيمة محيطة. (Id6635، b/171024925)
  • تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لتحقيق التناسق مع واجهة برمجة تطبيقات SideEffect وDisableEffect. لا يُسمح بـ LaunchedEffect بدون مَعلمات موضوع لتشجيع أفضل الممارسات. (Ifd3d4)
  • يحتوي Applier الآن على استدعاءات onStartChanges/onEndChanges للاستجابة التي يتم استدعاؤها عند بدء أو انتهاء Composer من تطبيق التغييرات على الشجرة. ويمكن استخدام هذه البيانات لإدارة الموارد على دفعات إذا لزم الأمر. (Icf476)
  • تتطلب أداة إعادة التركيب الآن CoroutineContext في الإنشاء (Ic4610)
  • التغييرات التي ستطرأ على طريقة حساب الشرائح الداخلية التي من المفترَض ألا تؤثر في واجهة برمجة التطبيقات العامة. (If9828)
  • تمت إزالة محوّلات rxjava2 المتوقفة نهائيًا والتي لا تأخذ القيمة الأولية (Idb72f).

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

  • Foundation.Text تم إيقاف العمل به واستبداله بـmaterial.Text. للحصول على واجهة برمجة تطبيقات خاصة بنص أساسي ولا تستخدم قيمًا من مظهر، يمكنك الاطّلاع على androidx.compose.foundation.BasicText. (If64cb)
  • تم إيقاف BaseTextField نهائيًا. يمكنك استخدام BasicTextField بدلاً من ذلك. (I896eb)
  • تم نقل العديد من الرموز ذات الصلة بالتنسيق من androidx.compose.ui إلى androidx.compose.caption.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 الآن مرجعًا للمقطوعة الموسيقية وأصل مؤلف صالح. يجب الآن إعداد "أداة إعادة إنشاء المحتوى الفاضح" في عدد أقل من الأماكن. (I4036f)
  • تمت إضافة واجهة برمجة التطبيقات المناظرة لـ DisposableEffect إلى SideEffect، ما أدى إلى ملء دور onCommit-with-params مع إضافة قيمة onDispose مطلوبة.
    • تمت إضافة واجهة برمجة التطبيقات cleanUpdateState API لنشر البيانات بدءًا من إعادة الإنشاء إلى العمليات المستمرة أو طويلة الأمد مثل DisposableEffects أو LaunchedTasks.
    • (Id50b9)
  • يقوم MutableVector الآن بتنفيذ الوصول العشوائي (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 على هذه الالتزامات.

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

  • معدِّل الإدخال التجريبي "Modifier.pointerInput" (Ia77d2)
  • يتم تحسين أداء التمرير في LazyColumn/Row من خلال القيام بجهد أقل في الإنشاء الفرعي في كل تمرير. تمت إضافة طريقة hasInvalidations() لفئة التركيب. تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
  • أضف renameState API لإطلاق الكوروتينات من المقطوعة الموسيقية التي تعدِّل قيمة State<T> واحدة بمرور الوقت (Id4a57)
  • تمت إعادة تسمية changeInconfiguration إلى LaunchedTask لمطابقة إرشادات Compose API (I99a8e).
  • يحدد ترتيب استدعاءاتplace() في التخطيطات المخصصة الآن ترتيب الرسم للأطفال (Ibc9f6)

الإصدار 1.0.0-alpha04

1 تشرين الأول (أكتوبر) 2020

تم إصدار "androidx.compose.runtime:runtime-*:1.0.0-alpha04". يحتوي الإصدار 1.0.0-alpha04 على هذه الالتزامات.

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

  • تمت إضافة OwnerScope للسماح بجمع نطاقات التخطيط ورسم الملاحظة بمجرد أن تصبح غير صالحة. (Ic4cf8)
  • تمت إضافة واجهة برمجة التطبيقات المشتقةStateOf API لإنشاء كائنات الحالة استنادًا إلى عملية حسابية قد تقرأ (وتستمد منها) كائنات الحالة الأخرى (If758b).
  • تمت إضافة واجهة برمجة التطبيقات TestOnly لـ SnapshotStateMonitorer (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 لاستخدام تغييرات بيانات "نبذة عني" وإنتاجها. (I3e722)
  • لقد تغير اصطلاح الاستدعاء للدوال المكونة. هذا تغيير عطل ثنائي. يجب إعادة تجميع كل المكتبات للعمل مع هذا الإصدار من المكوِّن الإضافي لإنشاء المحول البرمجي.

    لا يؤدي هذا التغيير إلى حدوث تغيير في عطل على مستوى المصدر لأن واجهات برمجة التطبيقات التي تم تغييرها هي فقط واجهات برمجة تطبيقات المحول البرمجي التي تحتوي على موافقة صريحة. (I7afd2، b/158123185)

  • تمت إزالة طرق الجدولة من embeddingContext (I7b9be).

  • تم إيقاف onPreCommit الآن وتم إيقاف onCommit الآن.

    يعمل 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 المتوقفة نهائيًا.

    تم تغيير واجهات برمجة التطبيقات الداخلية للإنشاء لتقليل مقدار النفقات العامة لتتبُّع كائنات الحالة مثل mutableStateof() (I80ba6)

  • تم إيقاف واجهة برمجة التطبيقات state { ... } نهائيًا بهدف إرسال طلبات فاضحة إلى remember { mutableStateOf(...) } بغرض التوضيح. ويؤدي ذلك إلى تقليل المساحة الإجمالية لواجهة برمجة التطبيقات وعدد المفاهيم لإدارة الحالة، كما يتطابق مع نمط by mutableStateOf() لتفويض خصائص الفئة. (Ia5727)

  • يحدِّد الآن Flow.collectAsState الآن المرسِل التلقائي من المقطوعة نفسها بدلاً من ضبطه على "المرسلون.Main" بشكل تلقائي. (I9c1d9)

  • يحدث التعطُّل عند إصلاح عنصر يحفظ الحالة داخل حلقة التكرار for. يُسمح الآن باستخدام المفتاح نفسه فيsaveInstanceState()، ويتم الآن ضبط واجهة برمجة تطبيقات UiSavedStateRegistry لهذا الشرط الجديد (I4ab76، b/160042650، b/156853976، b/159026663، b/154920561)

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

  • تم إيقاف emitView نهائيًا. استخدِم AndroidView بدلاً من ذلك إن أمكن لإصدار طرق العرض داخل ميزة "إنشاء". تجدر الإشارة إلى أنّ إنشاء طرق عرض ومجموعات عرض بشكل مباشر لن يكون متاحًا في المستقبل ما لم يتم تركها في شجرة المقطوعات الموسيقية، في حال كان ذلك ممكنًا باستخدام 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 = referentialEqualityPolicy() إلى الطلبات المرسَلة إلى mutableStateOf() وambientOf() وsavedInstanceStateOf(). (Ic21a7)

  • أصبحت الترميزات Row وColumn الآن دالّة مضمّنة تقلّل بشكل كبير من عبء استخدامهما. (I75c10)

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

  • تم إيقاف setViewContent نهائيًا. يجب استخدام setContent بدلاً منه. (I7e497، b/160335130)
  • تمت إضافة MonotonicFrameAnimationClock التي تتيح لك استخدام MonotonicFrameClock في شكل AnimationClockMonitorable بين ساعات الكوروتين الجديدة وواجهات برمجة التطبيقات التي لا تزال تستخدم الساعات القديمة المستندة إلى معاودة الاتصال.

    أصبحت معادلة MonotonicFrameClock المكافئة لـ ManualAnimationClock الآن بمثابة ManualFrameClock. (I111c7، b/161247083)

  • تمت إعادة صياغة Modifier.stateDraggable بالكامل وتمت إعادة تسميتها إلى Modifier.s الإحصاءاتable. تم تقديم فئة ScrollableState جديدة، وتمت إعادة هيكلة DrawerState وBottomDrawerState ليكتسب منه. [Modal/Bottom]DrawerLayout لم يعد يقبل معلمة onStateChange. (I72332، b/148023068)

  • تم إيقاف Modifier.plus نهائيًا، لذا استخدِم Modifier.ثم بدلاً من ذلك. تقدّم علامة "بعد ذلك" إشارة أقوى للطلب، بينما تحظر أيضًا كتابة Modifier.padding().background() + anotherModifier، ما يعطّل السلسلة ويصعب قراءتها (Iedd58، b/161529964)

  • تمت إضافة SubcomposeLayout. إنها مجموعة أولية منخفضة المستوى تسمح بتكوين العناصر الثانوية أثناء القياس إذا أردنا استخدام بعض القيم المتاحة فقط في وقت لاحق أثناء قياس تركيبة الشجرة الفرعية. على سبيل المثال، لا يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)

  • تمت إعادة تسمية Material filledTextField (حقل TextField)، تمت إعادة تسمية حقل TextField الأساسي إلى BaseTextField لتسهيل اكتشاف واجهات برمجة التطبيقات البسيطة المطلوبة واستخدامها (Ia6242, b/155482676).

  • تمت إعادة تسمية Modifier.drawBack إلى 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 التوضيحي نهائيًا. استخدم الحالة و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: استخدام مندوبي العقارات القابلة للتغيير والملكية

    وقد أصبح هذا الأسلوب أكثر سهولة بفضل تفويضات الموقع الإلكتروني في 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/923163}b/143163}

  • تغيّر استراتيجية إنشاء الرموز في المحول البرمجي لـ Compose. قبل التغيير، كان المحول البرمجي لإنشاء الإنشاء يحوّل الاستدعاءات إلى دوال قابلة للإنشاء. باستخدام هذا التغيير، نحوّل الآن هيكل الدالة المركبة ونترك موقع الاستدعاء بدون تغيير (في الغالب).

    وهذا يعني أن معظم المنطق الذي يتصل بوقت تشغيل الإنشاء يحدث في بداية نص الدالة، بدلاً من موقع الاستدعاء.

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

    لدعم هذا العمل، تم تغيير توقيع JVM لجميع الدوال القابلة للتعديل. يتم تحويل دالة قابلة للتعديل تقبل معلَمة واحدة إلى دالة تقبل 3 معلَمات، والمعلَمات الإضافية هي Composer، وهو عدد صحيح لـ "المفتاح"، وهو عدد صحيح لقناع بت يستخدم لنشر البيانات الوصفية من خلال الاستدعاءات.

    يحوِّل Compose الآن أيضًا الوسيطات التلقائية إلى دالة قابلة للتعديل. وهو يفعل ذلك بدون تقديم حمل زائد تلقائي اصطناعي للدالة نفسها، وبالتالي سينتج عن هذا التغيير تحديد عدد أقل من الدوال.

    حدوث التغييرات السلوكية المتعمّدة المعروفة الناتجة عن ما يلي:

    1. سيتم تخطي بعض المكالمات من حيث لم يكن يتم إجراؤها سابقًا
    2. يتم الآن اشتراك التعبيرات القابلة للتعديل في تعبيرات الوسيطات التلقائية ومعالجتها بشكل صحيح.

    تضمن هذا العمل بعض التحسينات: 1. ويتم نشر نتيجة مقارنات المعلَمات من خلال الرسم البياني للاستدعاءات في دوال أخرى قابلة للتكوين. سيؤدّي ذلك إلى تقليل المقارنات أثناء وقت التشغيل، وتقليل حجم جدول الخانة، وزيادة تخطّي الدوال القابلة للتعديل التي لم يتم تخطّيها في السابق. 2. تجدر الإشارة إلى أنّ المعلَمات التي يتبيّن أنّها "ثابتة" في وقت التجميع لا تتم مقارنتها أو تخزينها في وقت التشغيل. ويؤدي ذلك إلى تقليل عدد المقارنات وتقليل حجم جدول الشرائح. 3. ويتم استخدام بنية تدفق التحكم في نص الدوال لتقليل عدد المجموعات التي يتم إنشاؤها. يؤدي ذلك إلى تقليل حجم جدول الخانة وتقليل العمل في وقت التشغيل. 4. لا يتم تضمين معلمات الإرسال والاستقبال غير المستخدمة إلى الدوال عند تحديد إمكانية تخطي الدالة إذا لم يتم استخدامها داخل نص الدالة.

    معظم التغييرات التي قد تؤدي إلى أعطال كانت متعلّقة بواجهات برمجة التطبيقات التي يستهدفها المحوِّل البرمجي مباشرةً، ولن يتأثر الاستخدام المعتاد للإنشاء: 1. تمت إزالة Composer::startExpr 2. تمت إزالة Composer::endExpr 3. تم إيقاف Composer::call نهائيًا 4. تمّت إزالة الحمل الزائد لـ key. يُرجى استخدام إصدار vararg من الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي المحوري نهائيًا. يمكنك استخدام key كبديل. ‫6. تم تغيير ScopeUpdateScope::updateScope لتوقُّع دالة 3 بدلاً من Function1. 7. تم تحديث RereableFunction وresetableFunctionN لتضمين معلَمات وقت تجميع البيانات الإضافية (I60756، b/143464846)

  • تمت إضافة sortWith وremoveRange إلى MutableVector (Icccf7).

  • تمت إضافة عمليات تنفيذ الطريقة التلقائية لـ ChooseLifecycleMonitorer (I24289).

  • يتطلب Applier الآن طريقة clear() للتخلص من التراكيب (Ibe697)

  • تمت إضافة asMutableList() إلى MutableVector للسماح بتمريرها إلى واجهة برمجة تطبيقات عامة بدون الحاجة إلى نسخ القائمة بالكامل. (I298df)

  • تمت إضافة cleanCoroutineScope() للحصول على CoroutineScope مُدار من أجل إطلاق المهام استجابةً للفعاليات. (I0e264)

  • MutableVector هي مجموعة جديدة لا تنفّذ أيًّا من واجهة المجموعة القياسية. توفر هذه المجموعة سرعة تتجاوز المتطلبات الأخرى، والغرض منها هو استخدامها فقط في عمليات التنفيذ الداخلية. (I8ebd6)

  • تمت إزالة StableMutableList وStableMutableMap مؤقتًا لتجنب حدوث مشكلة في إصدار إنشاء لغة Kotlin. ستتم إعادة تقديم هذه الواجهات بعد تحديث ميزة الإنشاء إلى إصدار من لغة Kotlin لا يحتوي على المشكلة.

    أصبح SnapshotStateList وSnapshotStateMap متاحَين للجميع ولكن سيتم إيقافهما بعد استعادة StableMutableList وStableMutableMap. (Ia7769)

  • إضافة دالة withFrameNanos ذات المستوى الأعلى لتوقيت الرسوم المتحركة (Ie34c5)

  • تم إيقاف التعليق التوضيحي @Untracked. استبدال بـ @ComposableContract(tracked=false) (Id211e)

  • تمت إعادة تسمية RedirectableFunction وواجهات برمجة التطبيقات المرتبطة بها لتصبح ComposableLambda وما إلى ذلك. وقد تم استهداف واجهات برمجة التطبيقات هذه بواسطة المحول البرمجي فقط، لذلك من المفترض ألا يؤثر ذلك في التوافق على مستوى المصدر بشكل طبيعي. تمت إعادة التسمية بشكل أساسي لتوضيح ما هو أفضل لهذه الفئة عند ظهورها في عمليات تتبُّع تسلسل استدعاء الدوال البرمجية (I7eb25).

  • التعليق التوضيحي لـ @Composable لم يعد صالحًا للفئات (Ia5f02)

  • أصبح Ambient<T> الآن @Stable بدلاً من @Immutable (I0b4bb).

  • قبل إجراء هذا التغيير، كان المكوّن الإضافي لإنشاء المحول البرمجي يعترض بشكل غير ثلاثي عمليات استدعاء الدالة الإنشائية داخل دالة @Composable في حال وجود خطأ (I5205a، b/158123804)

  • لم يعد العنصر القابل لإعادة الإنشاء فكرة عملية تجريدية مفيدة. من المفترض أن تتم معظم عمليات إعادة التركيبة كنتيجة لعمليات تخصيص حالة MutableState. بالنسبة إلى أي شيء بخلاف ذلك، ننصحك باستخدام الدالة invalidate لبدء إعادة تركيب النطاق الحالي. (Ifc992)

  • الملاحظة لم تعد فكرة تجريدية مفيدة. وإذا كنت بحاجة إلى تكرارها، يمكن تكرار تنفيذها عن طريق إنشاء دالة قابلة للتكوين تنفّذ مَعلمة lambda قابلة للتركيب. على سبيل المثال، @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37)

  • تم إيقاف @Direct نهائيًا لصالح @ComposableContract(restartable=false) (If4708).

  • تمت إضافة محوِّل خاص بـ StateFlow الذي تم تقديمه مؤخرًا والذي يسمح بالتعبئة التلقائية للقيمة الأولية حتى تكون الحالة التي تم إرجاعها غير قابلة للقيم (I61dd8، b/156233789).

  • تمت إضافة محوّل لـ Flow. مثال على الاستخدام: قيمة val من خلال flow.collectAsState() (If2198، b/153375923)

  • [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.dispose نهائيًا. يمكنك استخدام الإجراء dispose على Composition الذي يعرضه setContent بدلاً من ذلك. تم نقل androidx.compose.Compose.subcomposeInto إلى androidx.ui.core.subcomposeInto تمت إعادة تسمية ComponentNode#emitInsertAt إلى ComponentNode#insertAt ComponentNode#emitRemoveAt

  • تم تعديل علامة ComposeFlags.COMPOSER_PARAM لتصبح true، ما سيؤدي إلى تغيير استراتيجية إنشاء الرمز في المكوّن الإضافي لإنشاء المحتوى. يؤدي هذا إلى إنشاء دوال @Composable باستخدام مَعلمة اصطناعية إضافية يتم تمريرها إلى استدعاءات @Composable اللاحقة لكي يتمكن وقت التشغيل من إدارة عملية التنفيذ بشكل صحيح. ومع ذلك، فإن هذا تغيير كبير يؤدي إلى كسر ثنائي، ومن المفترض أن يحافظ على التوافق على مستوى المصدر في جميع استخدامات الإنشاء الخاضعة للعقوبات. (I7971c)

  • تغييرات قد تؤدي إلى أعطال في واجهة برمجة تطبيقات Accessibilitys يمكنك الاطّلاع على سجلّ ومستندات Ambient<T> لمعرفة التفاصيل (I4c7ee، b/143769776).

  • تمت إضافة واجهة المستخدم-livedata - أداة جديدة مع محوّل لـ LiveData. مثال على الاستخدام: قيمة val من خلال liveData.observeAsState() (Ie9e8c، b/150465596)

  • محوِّلات Rx التي لا تحتوي على قيمة أولية صريحة تم إيقافها نهائيًا. استخدام القيمة "فارغ" ليس دائمًا أفضل خيار تلقائي، على سبيل المثال، عندما تكون لديك "قائمة"، من الأفضل أن تبدأ بـ الواجهة فارغة() أو أي قيمة تلقائية أخرى معقولة (I00025 أو b/161348384).

  • تمت إضافة ui-rxjava2 - أداة جديدة مع محوّلات لـ RxJava2. مثال على الاستخدام: قيمة val من خلال observable.subscribeAsState() (Ifab4b، b/153369097)

  • يمكن الآن استخدام savedInstanceState() مع الأنواع القابلة للقيم الفارغة (I6847f وb/153532190).

  • جديد listSaver() وmapSaver() من أجل تسهيل كتابة كائنات Saver المخصصة (I8cf68، b/152331508)

  • الدوال الجديدة: saveInstanceState() وتذكرSavedInstanceState(). هما تشبهان الدولة() وتذكر() ولكن لها إصدار دعم حالة المثيل المحفوظ (If1987، b/152025209)

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

  • تمت إعادة تسمية runOnIdleCompose إلى runOnIdle (I83607)
  • واجهة برمجة تطبيقات Made LayoutNode التجريبية (I4f2e9)
  • تم إيقاف androidx.ui.foundation.TextFieldValue وandroidx.ui.input.EditorValue نهائيًا. تم أيضًا إيقاف العناصر النصية TextField وFilledTextField وCoreTextField التي تستخدم هذا النوع. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005).
  • تمت إزالة واجهة برمجة تطبيقات DrawFrame التي تم إيقافها نهائيًا لصالح واجهة برمجة التطبيقات drawBack API على واجهة برمجة التطبيقات. عمليات إعادة ضبط الألوان والفرشاة والرسم الخلفية لتقليل مسارات الرموز بالإضافة إلى إزالة متطلبات إنشاء "المعدِّل" كجزء من عملية الإنشاء. (I0343a)
  • تم تحديث واجهات برمجة التطبيقات ذات المستوى الأعلى التي تعرض "لوحة الرسم" لعرض "CanvasScope" بدلاً من ذلك. فهذا يلغي حاجة المستهلكين إلى الحفاظ على كائنات الطلاء الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا يطلبون الوصول إلى لوحة الرسم، يمكنهم استخدام طريقة الإضافة drawCanvas التي توفّر استدعاءً لإصدار أوامر الرسم باستخدام لوحة الرسم الأساسية. (I80afd)
  • تم تغيير واجهة برمجة التطبيقات اللاحقة lambda API لـ WithConstraints. بدلاً من معلَمتين، تتضمن الآن نطاق مستلم، بالإضافة إلى القيود وLayoutDirection، توفر خصائص min width وmax width وminHeight وmaxHeight في Dp (I91b9a وb/149979702).
  • تمت إضافة أداة تعديل المساحة المتروكة المتماثلة. (I39840)
  • تم تعديل wrapContentDisplay وwrapContentLength لتوقُّع محاذاة رأسية أو أفقية بدلاً من أي محاذاة. تم تحديث مُعدِّل الجاذبية لقبول المحاذاة العمودية أو الأفقية. تم تعديل الصف والعمود والحزمة لإتاحة عمليات المحاذاة المستمرة المخصّصة. (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 والعمود "نطاق العمود" خارج "الصف والعمود". (I3a641)
  • تم تغيير اسم التخطيط المرن إلى وزن التخطيط. تمت إعادة تسمية المعلمة الضيقة للتعبئة. (If4738)
  • حصلت شركة WithConstraints على معلمة LayoutDirection (I6d6f7)
  • تمت إعادة تسمية الخلفية إلى DrawBack وجعلها قابلة للحفظ بشكل تلقائي (Ia0bd3)
  • تم استبدال ButtonStyle بدوال مميزة وإزالة الحمل الزائد للنص (السلسلة). يمكنك الاطّلاع على النماذج المحدَّثة للحصول على معلومات الاستخدام. (If63ab وb/146478620 وb/146482131)
  • أصبحت runOnIdleCompose وrunOnUiThread الآن دالتين عموميتين بدلاً من الطرق في ComposeTestRule. (Icbe8f)

المساهمة الخارجية

  • إزالة واجهة برمجة التطبيقات غير الضرورية مثل حلقة التكرار والمعالج من طبقة النقل Compose Runtime (I6847d)
  • يمكنك إيقاف Flow<T>.collectAsState() بدون قيمة مبدئية. استخدِم StateFlow<T> أو مرِّر قيمة أولية صريحة بدلاً من ذلك. (I63f98، b/157674865)