إنشاء بيئة التشغيل

هي الوحدات الأساسية التي يستند إليها نموذج البرمجة وإدارة الحالة في Compose، بالإضافة إلى وقت التشغيل الأساسي الذي يستهدفه المكوِّن الإضافي Compose Compiler Plugin.
التعديل الأخير الإصدار المستقر سحب المرشح الإصدار التجريبي إصدار أولي
4 سبتمبر 2024 1.7.0 - - 1.8.0-alpha01

البنية

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

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

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

إعلان التبعيات

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    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 على هذه عمليات التنفيذ.

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

  • تثبيت التبعيات على أدنى الإصدارات الثابتة المتوافقة (مثل com-runtime وtracing-perfetto) - إصلاح المشكلة حيث يؤدي إنشاء "التتبع في وقت التشغيل" إلى إصدار أحدث من وقت تشغيل إنشاء الرسالة في التطبيق.

الإصدار 1.0.0-alpha04

23 آب (أغسطس) 2023

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

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

  • يتوافق هذا العرض مع أحدث إصدارَين من "مقاييس الأداء" و"تتبُّع أداء Perfetto"، ما يتيح دعم "تتبُّع المقطوعة الموسيقية" عند بدء تشغيل التطبيق (التشغيل على البارد)، على سبيل المثال. في مقياس الأداء AndroidX وAndroid Studio (بدءًا من الإصدار التجريبي من Hedgehog 2).

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

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

الإصدار 1.8.0-alpha01

4 سبتمبر 2024

تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha01. يحتوي الإصدار 1.8.0-alpha01 على عمليات التنفيذ هذه.

الإصدار 1.7

الإصدار 1.7.0

4 سبتمبر 2024

تم طرح androidx.compose.runtime:runtime-*:1.7.0. يحتوي الإصدار 1.7.0 على عمليات التنفيذ هذه.

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

  • تمت إضافة إمكانية توفير مقطوعة موسيقية محلية تم احتسابها استنادًا إلى قيم المقطوعات الموسيقية الأخرى المحلية إما تلقائيًا باستخدام compositionLocalWithComputedDefault() أو من خلال توفير lambda لاستخدامها في احتساب القيمة باستخدام providesComputed بدلاً من provides.
  • يمكن الحصول على قيمة المقطوعة الموسيقية المحلية باستخدام خاصية currentValue للمقطوعة الموسيقية المحلية التي يمكن الوصول إليها من داخل دالة lambda حسب القيمة. يتم استخدام هذه السمة بدلاً من الدالة current التي لا يمكن الوصول إليها إلا من خلال دوال @Composable. (Iadbc0)
  • يمكن الوصول على الفور إلى كائنات الحالة التي تم إنشاؤها حديثًا من اللقطات الأخرى، بما في ذلك اللقطة العامة، مع حالتها الأولية. لن تظهر أي تعديلات لاحقة إلى أن يتم تطبيق اللقطة التي تم إنشاء العنصر فيها.
  • الحالة الأولية لـ mutableStateOf()، بالإضافة إلى نُسخها الأساسية، هي القيمة التي يتم تمريرها كمَعلمة إلى mutableStateOf(). الحالة الأولية للسمتَين mutableStateListOf() وmutableStateMapOf() فارغة.
  • تمت إضافة Snapshot.isInSnapshot وSnapshot.PreexistingSnapshotId اللذَين يتم استخدامهما لتفعيل عنصر حالة لإتاحة إمكانية الوصول إليه على الفور من خلال اللقطة العامة عند إنشائه.
  • يمكن أن تدعم كائنات الحالة المخصصة إمكانية الوصول إليها فورًا من خلال اتباع نمط التغييرات التي يتم إجراؤها على كائنات اللقطات المدمجة. (I84a17)
  • تفعيل nonSkippingGroupOptimization لإنشاء المكتبات يؤدي ذلك إلى زيادة كفاءة الرمز الذي تم إنشاؤه لجميع الدوال القابلة للإنشاء غير القابلة لإعادة التشغيل في androidx. نخطط لتفعيل هذه الميزة تلقائيًا في المستقبل. I(acbc08)
  • يمكنك إيقاف دالة lambdas القابلة للإنشاء في التركيبات الفرعية على الإطار نفسه. (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() أو من خلال توفير lambda لاستخدامها في احتساب القيمة باستخدام providesComputed بدلاً من provides.
  • يمكن الحصول على قيمة المقطوعة الموسيقية المحلية باستخدام خاصية currentValue للمقطوعة الموسيقية المحلية التي يمكن الوصول إليها من داخل دالة 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)
  • تجنُّب إيقاف مؤقت في أداة إعادة الإنشاء للوصول إلى ساعة الإطار (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 على هذه عمليات التنفيذ.

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

  • يمكنك إيقاف دالة lambdas القابلة للإنشاء في التركيبات الفرعية على الإطار نفسه. (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" عند تخزينها في عملية احتساب التذكُّر. (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 على ملفات lambdas المضمَّنة. (acfca0)
  • إصلاح المحتوى المنقول الذي يتلقى أحيانًا مقطوعة موسيقية محلية غير صحيحة. (035cd6)
  • يمكنك استخدام علامات تجزئة أسرع بدون تخصيص في RecomposeScopeImpl. (d79494)
  • يمكنك استخدام ObjectIntMap في DerivedState. (21862e)
  • استخدِم IntRef مع int 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)
  • إضافة الإصدارات الأساسية من الحالة وMutableState (fb3d89)
  • تمت إضافة Snapshot.isApplyObserverNotificationPending (I672a5)
  • تمت إضافة إصدارات أساسية من واجهة برمجة التطبيقات State، ما يسمح بتتبُّع قيم Int وlong وFloat ومزدوجة في عناصر 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
  • إصلاح تراجع التعديل المباشر للوضع القابل للتعديل في العُقد 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()" إلى الأنواع المتخصّصة المناسبة لها لإجراءات الإجراءات الأولية. معرّف الوبر هو AutoboxingStateCreation. في السابق، تم تفعيل هذا الفحص تلقائيًا لجميع المشاريع. للاطّلاع على هذا التحذير في محرِّر "استوديو Android" ونتجات أداة Lint الخاصة بمشروعك، عليك تغيير درجة الخطورة من "معلومات" إلى تحذير (أو مستوى أعلى) من خلال تضمين warning "AutoboxingStateCreation" ضمن إعداد Builder.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)
  • إضافة الإصدارات الأساسية من الحالة وMutableState (fb3d89)
  • تمت إضافة Snapshot.isApplyObserverNotificationPending (I672a5)

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

  • تخصيصات أقلّ (I65c09 وd7ea77 و727974 و445808)
  • عدم الاحتفاظ بمرجع اللقطة في ComposerImpl (0206f7)
  • إلغاء سريع لعملية الإنشاء CoroutineScopes (a55362 وbd382f)
  • عدم تطبيق المقطوعة الموسيقية مرّتين (f5791b)
  • التأكّد من إبطال قيم الحالة المشتقّة التي لم يتم إعدادها (aa2a92)
  • يمكنك طلب onEndChanges أثناء التخلص من المقطوعة الموسيقية. (62cc8c)
  • إصلاح عملية نقل المحتوى إلى تركيب فرعي (4beb41)
  • إصلاح حالات التوقف المؤقت المحتملة (c1a425
  • يجب أن توقف ميزة ON_STOP عمليات بث ساعة الإطار مؤقتًا بدلاً من تركيبها (f4a2d1).
  • إصلاح العلامات التي تم تغييرها لتطبيقات lambda التي تمت إعادة تشغيلها (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 ومزدوجة في عناصر 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
  • إصلاح تراجع التعديل المباشر للوضع القابل للتعديل في العُقد 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 مما يسمح بمراقبة دورة حياة عُقد Compose (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

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 على عمليات الالتزام هذه.

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

  • تم التحديث لإتاحة الإصدار androidx.compose.ui 1.3.2

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

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

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

واجهات برمجة تطبيقات الانعكاس القابل للتعديل

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

نظام اللقطات

الإصدار 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. سيؤدي ذلك إلى الإبلاغ عن خطأ في عمليات الإرجاع المبكر بدلاً من السماح بالإرجاع المبكر، ما سيؤدي إلى الإبلاغ عن خطأ داخلي لاحق.
  • من المحتمل أن يؤدي هذا التغيير إلى الإبلاغ عن أخطاء جديدة في برنامج التجميع تتطلّب إزالة عمليات الإرجاع غير المحلية من دالة lambdas التي يتم تمريرها إلى هذه الدوال. (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 من خلال ComposeAllowed، بالإضافة إلى العديد من عمليات إصلاح الأخطاء التي أدت إلى إصلاح الأخطاء. كانت أهم ميزة جديدة هي مقدمة عن 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. إنّ الدالة التي تحتاج إلى استهداف تطبيق آخر يجب أن توفّر بشكل صريح التعليق التوضيحي للعلامة المستهدفة للتطبيق المطلوب. (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 أو دوال ذات صلة قابلة للإنشاء.

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

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

الإصدار 1.1.0-rc03

26 يناير 2022

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

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

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

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

  • تم إصلاح مثيلات الحالة المستمدة من تتبُّع الأعطال. (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 لميزة Compose. لا تزال ميزة إنشاء 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 Studio Bumblebee وAGP 7.1. (b/194289155)

الإصدار 1.0.0-rc02

14 يوليو 2021

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

  • إصلاح حالات العرق في SnapshotStateObserver والتي تؤدي إلى حدوث تشوّه 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-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 على عمليات التنفيذ هذه.

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

  • تمت إضافة واجهات برمجة تطبيقات جديدة للمحول البرمجي تسمح سيتم إنشاء معلومات المصدر التي يتم إنشاؤها بواسطة برنامج التحويل البرمجي التي تمت إزالتها أثناء تصغير المصدر. (Ia34e6)
  • تقدم السياسة ReusableContent التي ستحاول إعادة استخدام عُقدًا في محتواها بدلاً من استبدالها عند الضغط على المفتاح التغييرات. عندما يتم تغيير المفتاح، فإن القيم السابقة في يتم تجاهل جدول الخانات الخاص بالمحتوى باستثناء العُقد التي تم إنشاؤها والقيم المستخدمة لتحديث العُقد.

    يقدّم ReusableComposeNode الذي سيعيد استخدام العقدة. المنبعثة بدلاً من استبدالها كما هي في ComposeNode. (I1dd86)

  • @ComposeCompilerApi لم يعُد @RequiresOptIn (Iab690)

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

  • سيحتفظ العمود الكسول/الصف الآن بما يصل إلى عنصرَين نشطَين سابقًا (لا يتم التخلص منه) حتى عند الانتقال للأسفل أو للأعلى. يسمح هذا للمكون بإعادة استخدام الإنشاءات الفرعية النشطة عندما سنحتاج إلى إنشاء عنصر جديد يحسن أداء التمرير. (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) } المعطّل عند استخدامه داخل وجهة إنشاء التنقل. (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)

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

    • لم تعد طريقة إنشاء المقطوعة الموسيقية تقبل معلَمة رئيسية، وتم إيقافها نهائيًا.
    • تم تحويل currentCompositeKeyHash إلى سمة مستوى أعلى قابلة للإنشاء بدلاً من دالة مستوى أعلى قابلة للإنشاء.
    • تم نقل GenreData وSurfaceGroup إلى مساحة الاسم androidx.compose.runtime.tooling
    • تم إنشاء واجهة ComposableLambda بدلاً من فئة خرسانة ولم تعد تحتوي على معلمات من النوع.
    • تم إنشاء واجهة ComposableLambdaN بدلاً من فئة خرسانية ولم تعد تحتوي على معلمات من النوع.
    • تم نقل الدالة sampleFlow إلى مساحة الاسم androidx.compose.runtime.
    • فطريقة دمج SnapshotMutationPolicy لم تعد تجريبية
    • تمت إزالة الدالة clearRoots ذات المستوى الأعلى @TestOnly. لم يعد من الضروري استخدامه.
    • تمت إزالة الدالتين keySourceInfoOf وresetSourceInfo. لم تعد ضرورية.
    • تمت إزالة Composer.collectKeySource Information. لم يعد من الضروري استخدامه.
    • تمت إزالة طرق isJOINedKey وjoinKeyLeft وjoinKeyRight. لم تعد ضرورية.
    • تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. وبسبب دلالات فئة الملف في Kotlin، سيؤدي ذلك إلى تعطيل التوافق الثنائي ولكن ليس التوافق مع المصدر، لذا من المفترض ألا يمثّل ذلك مشكلة لمعظم المستخدمين.
    • (I99b7d، b/177245490)
  • SnapshotStateObserver لم يعد تجريبيًا (Id2e6a)

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

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

    • تمت إضافة مَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص المساحة المتروكة التلقائية.
    • المعلَمات المُعاد ترتيبها في BackdropScaffold لاتّباع إرشادات واجهة برمجة التطبيقات للمَعلمات المطلوبة قبل المَعلمات الاختيارية.
    • تم نقل المعلمة icon في Bottom NavigationItem ليكون بعد selected وonClick.
    • تمت إعادة تسمية المعلَمة alwaysShowLabels في Bottom NavigationItem إلى alwaysShowLabel.
    • تمت إعادة تسمية معلَمات bodyContent في بعض المكوّنات لتصبح content فقط.
    • تم إعادة ترتيب المعلمات في ButtonDefaults.buttonColors(). تجدر الإشارة إلى أنّه نظرًا لعدم تغيير نوع المَعلمات، لن يتسبب ذلك في حدوث خطأ في الرمز، لذا يُرجى التأكد من استخدام المَعلمات المُسَمّاة أو تعديل الترتيب يدويًا، وإلا لن يعمل الرمز كما كان في السابق.
    • تمت إضافة المَعلمة secondaryVariant إلى darkColors(). عادةً ما يكون هذا اللون هو نفسه اللون secondary في المظهر الداكن، ولكنّه تتم إضافته لتوفير المزيد من الاتّساق وتخصيص المحتوى.
    • تمت إزالة EliffationDefaults وanimateEliffation() من واجهة برمجة التطبيقات العامة نظرًا لعدم استخدامهما بشكل شائع أو الاستفادة منهما.
    • تمت إعادة تسمية 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)
  • تمت إعادة تسمية GenreReference إلى ChocolateContext (I53fcb)
  • تم نقل ComponentActivity.setContent إلى استخدام androidx.activity.compose.setContent في وحدة androidx.activity:activity-compose. (Icf416)
  • تم تحديث Snapshot API لتصبح أكثر اتّساقًا مع إرشادات واجهة برمجة التطبيقات بالإضافة إلى إخفاء فئات التنفيذ الداخلي من واجهة برمجة التطبيقات العامة. (Id9e32)
  • تمت إعادة تسمية "وضع الاستراحة" ليتوافق مع "وضع الاستراحة" -> إعادة تسمية GenreLocal. كان يُطلق على "الأحياء" اسم AmbientFoo، أمّا الآن GenreLocals، فهو يطلق عليه LocalFoo. (I2d55d)
  • تمت إعادة تسمية Ambient إلى SurfaceLocal، وAmbiOf / staticAmbientOf، إلى composeLocalOf / static المؤلفLocalOf. يساعد هذا التغيير في توضيح الغرض من SurfaceLocal: وهي آلية لتوفير أو استرداد القيم المحلية في المقطوعة الموسيقية. يجب أن تبدأ مثيلات ChocolateLocal بـ Local، مثل val LocalFoo = distributionLocalOf { Foo() }. (Ia55b6)
  • cannot translate لتصبح طرقًا مصاحبة لـ Snapshot. (I91f19)
  • تم إيقاف @ComposableContract نهائيًا لصالح ثلاثة تعليقات توضيحية أكثر تحديدًا.

    تغيّر اسم "@ComposableContract(restartable = false)" إلى "@NonRestartableComposable" أصبح @ComposableContract(readonly = true) @ReadOnlyComposable تغيّر اسم "@ComposableContract(preventCapture = true)" ليصبح @DisallowComposableCalls. تمت إزالة @ComposableContract(tracked = true). (I60a9d)

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

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

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

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

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

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

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

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

  • تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم ضبط الإعدادات التلقائية على أدوات إعادة إنشاء على مستوى النافذة بشكل كسول والمستندة إلى ViewTreeLifecycleOwner للنافذة. إعادة التركيب يتم إيقاف علامات الصور المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء فترة حياة المضيف متوقف. (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 API (If760e).
  • تم نهائيًا إيقاف واجهة برمجة التطبيقات emit() وجميع عمليات التحميل الزائدة وإعادة تسميتها إلى ComposeNode. واجهات برمجة التطبيقات متطابقة، ولكن باسم مختلف فقط لاتباع اصطلاحات التسمية في Compose (I4137b)
  • تم إيقافableate وCompateReference() نهائيًا لصالح currentRecomposeScope و"تذكُّر لبطاقة تحكُّم مستخدمة" على التوالي. (I583a8)
  • يستبدل تذكرObserver واجهة ConnectionLifecycleObserver وقد تم إيقاف ConnectionLifecycleObserver نهائيًا.

    يُعد 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)
  • توسيع واجهات برمجة تطبيقات ComposeView للسماح بإعادة التدوير مشاهدات من خلال التأليف مع عرض المقطوعات الموسيقية لإعادة ابتكارها لاحقًا. إضافة واجهات برمجة تطبيقات لتثبيت أدوات إعادة الإنشاء على مستوى النافذة واكتشافها و ComposeReferences لإنشاء مقطوعات موسيقية فرعية.

    أضِف ViewCoverStrategy لإعداد ميزة التخلّص من المقطوعة الموسيقية. استراتيجية [Abstract]ComposeViews السلوك الافتراضي هو التخلص من من بين النوافذ. (I860ab)

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

  • تعرض أداة إعادة الإنشاء الآن تدفقًا لحالتها الحالية، ما يسمح مراقبة نشاطه ونشاط التأثيرات المرتبطة به. (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 على هذه عمليات التنفيذ.

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

  • تمت إزالة سلوت Table وقارئ خانة TableauWriter من واجهة برمجة التطبيقات العامة. تم وضع علامة على هذه المهام على أنها داخلية ComposeAPI سابقًا. وهي الآن داخلية إلى وحدة الإنشاء.

    تمّت إضافة لأجهزة ComposeData وSurface Group كـ لاستبدال واجهة برمجة تطبيقات أدوات ui لاستخدامها من أجل استخراج المقطوعة الموسيقية. هذه الإعلانات متاحة للجميع، ولكنّها ليست مُعَدة للاستخدام خارج واجهة برمجة تطبيقات ui-tooling API، وذلك لأنها توفّر المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling API (I31a9c)

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

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

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

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

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

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

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

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

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

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

       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 على هذه عمليات التنفيذ.

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

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

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

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

الإصدار 1.0.0-alpha07

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

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

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

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

  • تم إيقاف التعليق التوضيحي @UnionType نهائيًا (I57cde)
  • تمت إضافة provideDefault كبديل لتوفير البيئة المحيطة، ويمكن استخدامه لتحديد القيم المحيطة التي لن يتم ضبطها إلا في حال عدم توفّر قيمة البيئة المحيطة. (Id6635، b/171024925)
  • تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لتحقيق الاتساق مع واجهتَي برمجة التطبيقات SideEffect وDiveEffect. LaunchedEffect بدون لا يُسمح بمعلمات الموضوع للتشجيع على أفضل الممارسات. (Ifd3d4)
  • لدى Applier الآن استدعاءات onStartupChanges/onEndChanges التي سيتم استدعاء هذه العملية عند بدء/انتهاء مُلحِّن من تطبيق التغييرات على الشجرة. ويمكن استخدام هذه البيانات لتجميع الموارد إذا لزم الأمر. (Icf476)
  • تتطلّب أداة إعادة الإنشاء الآن توفُّر CoroutineContext عند الإنشاء (Ic4610).
  • التغييرات التي تطرأ على تنفيذ جدول الشريحة الداخلية في واجهة برمجة التطبيقات العامة. (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 على هذه عمليات التنفيذ.

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

  • أصبحت الآن أداة إعادة إنشاء مرجعًا تابعًا للمقطوعة الموسيقية الأصل للمقطوعة الموسيقية. أصبحت أداة إعادة الإنشاء الصريح مطلوبة الآن في عدد أقل من الأماكن. (I4036f)
  • تمت إضافة واجهة برمجة التطبيقات DiscableEffect API إلى SideEffect، دور onCommit-with-params، ولكن مع استخدام onDispose.
    • تمت إضافة واجهة برمجة التطبيقات writeUpdatedState لنشر البيانات من إعادة الإنشاء إلى العمليات الجارية أو طويلة الأجل مثل DisableEffects أو LaunchedTasks.
    • (المعرّف 50b9)
  • تنفِّذ MutableVector الآن دالة SpamAccess (I85d73، وb/170461551).
  • تمت إضافة التأثير الجانبي القابل للإنشاء لتطبيق الآثار الجانبية التكوين مع الكائنات التي تديرها المقطوعة. 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 من خلال تقليل العمل في الإنشاء الفرعي في كل تمرير. تمت إضافة طريقة has invalidations() الجديدة لفئة المقطوعة الموسيقية. تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى hasValidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
  • إضافة واجهة برمجة تطبيقات productState لتشغيل الكوروتين من التركيبة تعمل على تعديل قيمة State<T> واحدة بمرور الوقت (Id4a57)
  • تمت إعادة تسمية launchInConnection إلى 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)
  • تمت إضافة واجهة برمجة التطبيقاتedStateOf API لإنشاء كائنات الحالة استنادًا إلى عملية حسابية قد تقرأ (وتستنتج من) كائنات الحالة الأخرى (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 للاستهلاك وإنتاج تغييرات في بيانات اللقطة. (I3e722)
  • يتضمن اصطلاح الاستدعاء للدوال القابلة للإنشاء بتغييره. وهذا التغيير يؤدّي إلى كسر ثنائي. يجب أن تكون جميع المكتبات للعمل مع هذا الإصدار من المكون الإضافي للمحول البرمجي للإنشاء.

    لا يؤدي هذا التغيير إلى حدوث تغيير فاصل على مستوى المصدر فقط واجهات برمجة التطبيقات التي تم تغييرها هي واجهات برمجة تطبيقات للتجميع البرمجي تشتمل على الاشتراك. (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 المتوقّفة نهائيًا.

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

    أصبح الآن MonotonicFrameClock المكافئ لـ guideAnimationClock الساعة اليدوية. (I111c7، b/161247083)

  • تمت إعادة صياغة Modifier.stateDraggable بالكامل وإعادة تسميتها إلى Modifier.scacheable. تم طرح فئة جديدة لـ ShortableState، تمت إعادة ضبط 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. 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: استخدام التفويضات في حالة الميزات القابلة للتغيير ومفوَّضي الملكية

    وقد تم تسهيل هذه الطريقة باستخدام ميزة تفويض السمة في 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/143263)Ⴏ

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

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

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

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

    تعمل ميزة "إنشاء" الآن على تحويل الوسيطات التلقائية إلى دالة قابلة للإنشاء. ويتم ذلك بدون إدخال حِمل زائد اصطناعي إضافي تلقائي على الدالة نفسها، وبالتالي سيؤدي هذا التغيير إلى تحديد عدد أقل من الدوال.

    التغييرات السلوكية المقصودة المعروفة الناتجة عن ما يلي:

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

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

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

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

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

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

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

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

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

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

    تم نشر SnapshotStateList وSnapshotStateMap بشكل علني الآن ولكن سيتم يتم إيقافها نهائيًا بعد استعادة StableMutableList وStableMutableMap. (Ia7769)

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

  • تم إيقاف التعليق التوضيحي @Untracked نهائيًا. الاستبدال بـ @Composable خطوات(tracked=false) (Id211e)

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

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

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

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

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

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

  • تم إيقاف @Direct نهائيًا لصالح @Composable أهدافك(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.disposeAccounts نهائيًا. بدلاً من ذلك، استخدِم طريقة 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، ما سيؤدي إلى تغيير استراتيجية إنشاء الرموز في المكوّن الإضافي لإنشاء الرموز. على مستوى عالٍ، يؤدي هذا الأمر إلى إنشاء دوال @Composable باستخدام مَعلمة اصطناعية إضافية، والتي يتم تمريرها إلى استدعاءات @Composable اللاحقة لكي يدير بيئة التشغيل عملية التنفيذ بشكل صحيح. ويُعد هذا تغييرًا كبيرًا لأعطال النظام الثنائي، ولكن يجب أن يحافظ هذا التغيير على التوافق على مستوى المصدر في جميع الاستخدامات الخاضعة لعقوبات. (I7971c)

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

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

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

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

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

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

  • الدوال الجديدة: savedInstanceState() وYouSavedInstanceState(). وهما يشبهان State() و"rename()" ولكن يتضمّنان دعم حالة مثيل محفوظة (If1987, b/152025209)

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

  • تمت إعادة تسمية runOnIdleCompose إلى runOnIdle (I83607).
  • تم تصميم واجهة برمجة التطبيقات LayoutNode تجريبية (I4f2e9)
  • androidx.ui.foundation.TextFieldValue و تم إيقاف androidx.ui.input.EditorValue نهائيًا. حقل نصي، العناصر القابلة للإنشاء FileedTextField وCoreTextField التي تستخدم تم أيضًا إيقاف هذا النوع نهائيًا. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005)
  • تمت إزالة DrawBackground المتوقّفة نهائيًا واجهة برمجة التطبيقات لصالح إضافة drawBackground واجهات برمجة التطبيقات في Modifier. إعادة الهيكلة اللون والفرشاة والتلوين كخلفية عمليات التنفيذ لتقليل مسارات الرمز أيضًا كشرط لإزالة المُعدّل لإنشاء المُعدّل كجزء من التكوين. (I0343a)
  • تم تعديل المستوى الأعلى. لإنشاء واجهات برمجة تطبيقات تعرض لوحة رسم عرض CanvasScope بدلاً من ذلك. سيؤدي هذا إلى إزالة حاجة المستهلكين إلى الحفاظ على طلاء الأجسام الخاصة بك. بالنسبة إلى المستهلكين الذين لا تزال بحاجة إلى الوصول إلى لوحة رسم يمكنه استخدام إضافة drawCanvas توفر رد الاتصال للمشكلة أوامر الرسم باستخدام الدالة لوحة. (I80afd)
  • تم تغيير واجهة برمجة تطبيقات lambda اللاحقة بالقيود الخاصة بالقيود المفروضة على واجهة برمجة تطبيقات lambda. فبدلاً من مَعلمتَين، أصبح لديه نطاق للمستلِم، بالإضافة إلى القيود وLayoutDirection الذي يوفّر خصائص minRate و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 خارج الصف والعمود. (I3a641)
  • تمت إعادة تسمية Layoutflex إلى Layoutweight. تمت إعادة تسمية معلَمة ضيقة للتعبئة. (If4738)
  • حصلت WithConstraints على معلمة LayoutDirection (I6d6f7)
  • تمت إعادة تسمية الخلفية إلى DrawBackground وإدراجها في الذاكرة تلقائيًا (Ia0bd3).
  • تم استبدال ButtonStyle بدوال مميّزة وإزالة الحمل الزائد للنص (السلسلة). يمكنك الاطّلاع على النماذج المعدّلة للحصول على معلومات الاستخدام. (If63ab وb/146478620 وb/146482131)
  • runOnIdleCompose وrunOnUiThread هما الآن دالتان عموميتان بدلاً من الطرق في ComposeTestRule. (Icbe8f)

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

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