כתיבת זמן ריצה

אבני הבניין הבסיסיות של מודל התכנות וניהול המצבים של Compose, ושל זמן הריצה העיקרי של הפלאגין Compose Compiler לטירגוט.
העדכון האחרון גרסה יציבה מועמד לפרסום גרסת בטא גרסת אלפא
4 בספטמבר 2024 1.7.0 - - 1.8.0-alpha01

מבנה

תהליך הכתיבה הוא שילוב של 7 מזהי קבוצות Maven בתוך androidx. כל קבוצה מכיל קבוצת משנה מטורגטת של פונקציונליות, שלכל אחת מהן יש גרסה משלה הערות.

בטבלה הזו מוסבר על הקבוצות והקישורים לכל קבוצה של נתוני גרסה.

קיבוץתיאור
compose.animationיוצרים אנימציות באפליקציות 'Jetpack פיתוח נייטיב' כדי להעשיר את חוויית המשתמש.
compose.compilerשינוי פונקציות @Composable והפעלת אופטימיזציות באמצעות פלאגין מהדר של Kotlin.
compose.foundationכתיבת אפליקציות ב-Jetpack פיתוח נייטיב עם אבני בניין מוכנות לשימוש והרחבת היסודות לבניית חלקים משלכם במערכת העיצוב.
compose.materialבניית ממשקי משתמש ב-Jetpack פיתוח נייטיב עם רכיבים מוכנים לשימוש ב-Material Design. זו נקודת הכניסה ברמה הגבוהה יותר של 'כתיבה', שנועדה לספק רכיבים שתואמים לאלה שמתוארים באתר www.material.io.
compose.material3בניית ממשקי משתמש ב-Jetpack פיתוח נייטיב עם רכיבי Material Design 3, הפיתוח הבא של עיצוב Material Design. Material 3 כולל עיצוב ורכיבים מעודכנים ותכונות התאמה אישית של Material You, כמו צבעים דינמיים, ונועד להיות אחיד עם הסגנון החזותי החדש של Android 12 וממשק המשתמש של המערכת.
compose.runtimeאבני הבניין הבסיסיות של מודל התכנות וניהול המצבים של Compose, ושל זמן הריצה העיקרי של הפלאגין Compose Compiler לטירגוט.
compose.uiרכיבים בסיסיים בממשק המשתמש של הרכבה שנדרשים לאינטראקציה עם המכשיר, כולל פריסה, שרטוט וקלט.

הצהרה על יחסי תלות

כדי להוסיף תלות בכתיבה, צריך להוסיף את מאגר 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"
    }
}

למידע נוסף על יחסי תלות, אפשר לעיין במאמר הוספת יחסי תלות של build.

משוב

המשוב שלך עוזר לנו לשפר את 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 מכילה את התחייבויות אלה.

תיקוני באגים

  • הצמדת יחסי תלות לגרסאות היציבות הכי נמוכות (כלומר, זמן ריצה של כתיבה ו-Tracing-perfetto) – תיקון בעיה שבה מעקב אחרי זמן ריצה של הרכבה יוביל לגרסה חדשה יותר של זמן ריצה של כתיבת הודעה לאפליקציה.

גרסה 1.0.0-alpha04

23 באוגוסט 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 משוחרר. גרסה 1.0.0-alpha04 מכילה את התחייבויות אלה.

תכונות חדשות

  • תאימות לגרסאות העדכניות של נקודת ההשוואה ו-Tracing Perfetto, שמאפשרים תמיכה במעקב אחר הרכב בזמן ההפעלה של האפליקציה (הפעלה במצב התחלתי), למשל. בנקודת השוואה של AndroidX וב-Android Studio (החל מ-Hdgehog Beta 2).

שינויים ב-API

  • השם של androidx.tracing.perfetto.Trace השתנה. השם החדש הוא androidx.tracing.perfetto.PerfettoSdkTrace. (I44af8)
  • מעקב אחר ממשקי ה-API של Perfetto SDK תואם ל-android.os.Trace. (I73ba0, b/282199917)
  • דרישות מוקדמות למעקב אחר הפעלת האפליקציה. (Iad890)
  • קובצי API ניסיוניים וציבוריים מוזגו (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 היא ספרייה שמאפשרת הוספה של כלים שתומכים בה (בקרוב) תאפשר מעקב מורחב באפליקציית 'כתיבה'. הגרסה הראשונית הזו היא 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)
  • אובייקטים של מצב חדש שנוצרו נגישים באופן מיידי מקובצי snapshot אחרים, כולל תמונת המצב הגלובלית, עם המצב הראשוני שלהם. שינויים שיבוצעו לאחר מכן לא יהיו גלויים עד להחלת תמונת המצב שבה האובייקט נוצר.
  • המצב הראשוני של mutableStateOf(), וגם הגרסאות הראשוניות שלהן, הוא הערך שמועבר כפרמטר אל mutableStateOf(). המצב הראשוני של mutableStateListOf() ושל mutableStateMapOf() ריק.
  • נוספו Snapshot.isInSnapshot ו-Snapshot.PreexistingSnapshotId שמשמשים להפעלת אובייקט מצב כדי לתמוך בגישה מיידית מתמונת המצב הגלובלית בזמן יצירתו.
  • אובייקטים במצב מותאם אישית יכולים לתמוך בגישה מיידית על ידי מעקב אחר תבנית השינויים שבוצעו באובייקטים המובנים של תמונת מצב. (I84a17)
  • הפעלת nonSkippingGroupOptimization לספריות כתיבה. בעקבות זאת, הקוד שנוצר לכל הפונקציות הקומפוזביליות שלא ניתנות להפעלה מחדש ב-androidx יעיל יותר. בעתיד אנחנו מתכננים להפעיל את האפשרות הזו כברירת מחדל. I(acbc08)
  • ביטול התוקף של רכיבי lambda קומפוזביליים בתרכובות משנה באותה מסגרת. (98301c)
  • התקשרות חזרה אל onRelease באותו סדר שבו התקשרת אל onForgotten. (2cd790)
  • הפעלת מצב דילוג מהיר (ed1766)
  • הגדרה של currentCompoundHashKey כייחודית ביותר מקרים (d4a872)

גרסה 1.7.0-rc01

21 באוגוסט 2024

androidx.compose.runtime:runtime-*:1.7.0-rc01 משוחרר. גרסה 1.7.0-rc01 מכילה את ההתחייבויות האלה.

גרסה 1.7.0-beta07

7 באוגוסט 2024

androidx.compose.runtime:runtime-*:1.7.0-beta07 משוחרר. גרסה 1.7.0-beta07 כוללת את ההתחייבויות האלה.

גרסה 1.7.0-beta06

24 ביולי 2024

androidx.compose.runtime:runtime-*:1.7.0-beta06 משוחרר. גרסה 1.7.0-beta06 כוללת את ההתחייבויות האלה.

גרסה 1.7.0-beta05

10 ביולי 2024

androidx.compose.runtime:runtime-*:1.7.0-beta05 משוחרר. גרסה 1.7.0-beta05 כוללת את ההתחייבויות האלה.

גרסה 1.7.0-beta04

26 ביוני 2024

androidx.compose.runtime:runtime-*:1.7.0-beta04 משוחרר. גרסה 1.7.0-beta04 כוללת את ההתחייבויות האלה.

גרסה 1.7.0-beta03

12 ביוני 2024

androidx.compose.runtime:runtime-*:1.7.0-beta03 משוחרר. גרסה 1.7.0-beta03 כוללת את ההתחייבויות האלה.

גרסה 1.7.0-beta02

29 במאי 2024

androidx.compose.runtime:runtime-*:1.7.0-beta02 משוחרר. גרסה 1.7.0-beta02 כוללת את ההתחייבויות האלה.

גרסה 1.7.0-beta01

14 במאי 2024

androidx.compose.runtime:runtime-*:1.7.0-beta01 משוחרר. גרסה 1.7.0-beta01 כוללת את ההתחייבויות האלה.

גרסה 1.7.0-alpha08

1 במאי 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha08 משוחרר. גרסה 1.7.0-alpha08 מכילה את התחייבויות אלה.

גרסה 1.7.0-alpha07

17 באפריל 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha07 משוחרר. גרסה 1.7.0-alpha07 מכילה את התחייבויות אלה.

תכונות חדשות

  • נוספה היכולת לספק יצירה מקומית של הרכב שמחושב על בסיס ערכים של מקומיים אחרים בתחום היצירה כברירת מחדל, באמצעות compositionLocalWithComputedDefault() או על ידי מתן lambda לחישוב הערך באמצעות שימוש ב-providesComputed במקום ב-provides.
  • ניתן לקבל את הערך של הרכב מקומי באמצעות התכונה currentValue של הרכב המקומי שניתן לגשת אליו מתוך lambda, שמחשב את הערך. הערך הזה משמש במקום current, שניתן לגשת אליו רק בפונקציות @Composable. (Iadbc0)

שינויים ב-API

  • אובייקטים של מצב חדש שנוצרו נגישים באופן מיידי מקובצי snapshot אחרים, כולל תמונת המצב הגלובלית, עם המצב הראשוני שלהם. שינויים שיבוצעו לאחר מכן לא יהיו גלויים עד להחלת תמונת המצב שבה האובייקט נוצר.
  • המצב הראשוני של mutableStateOf(), וגם הגרסאות הראשוניות שלהן, הוא הערך שמועבר כפרמטר אל mutableStateOf(). המצב הראשוני של mutableStateListOf() ושל mutableStateMapOf() ריק.
  • נוספו Snapshot.isInSnapshot ו-Snapshot.PreexistingSnapshotId שמשמשים להפעלת אובייקט מצב כדי לתמוך בגישה מיידית מתמונת המצב הגלובלית בזמן יצירתו.
  • אובייקטים במצב מותאם אישית יכולים לתמוך בגישה מיידית על ידי מעקב אחר תבנית השינויים שבוצעו באובייקטים המובנים של תמונת מצב. (I84a17)

תיקוני באגים

  • תוקן המיזוג של readObserver בתמונות מצב בתוך תמונות. בעקבות זאת, המצבים הנגזרים המקוננים מבטלים את תוקף התוקף שלהם כשנעשה בהם שימוש בתוך snapshotFlow. (Idf138)

גרסה 1.7.0-alpha06

3 באפריל 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha06 משוחרר. גרסה 1.7.0-alpha06 מכילה את התחייבויות אלה.

תיקוני באגים

  • תיקון לספק ערכים בודדים שמטפלים ב-providesDefault (538f45)
  • נמנעים ממבוי סתום ב-Recomposer בגישה לשעון הפריימים (07e5c6)

גרסה 1.7.0-alpha05

20 במרץ 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha05 משוחרר. גרסה 1.7.0-alpha05 מכילה את התחייבויות אלה.

תיקוני באגים

  • ניקוי שינויים מאוחרים בהרכבה שהושבת (5950bc)

גרסה 1.7.0-alpha04

6 במרץ 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha04 משוחרר. גרסה 1.7.0-alpha04 מכילה את התחייבויות אלה.

שיפורים בביצועים

  • קוראים לפונקציה Snapshot.current פעם אחת לפי הערכת מצב נגזרת (ee7daf)
  • קריאה אחת של currentRecord לכל תצפית ביצירה (b882b2)
  • הסרה של הקצאה לא מכוונת של איטרטור ב-snapshotFlow (231e56)
  • הפעלת nonSkippingGroupOptimization לספריות כתיבה. בעקבות זאת, הקוד שנוצר לכל הפונקציות הקומפוזביליות שלא ניתנות להפעלה מחדש ב-androidx יעיל יותר. בעתיד אנחנו מתכננים להפעיל את האפשרות הזו כברירת מחדל. I(acbc08)

גרסה 1.7.0-alpha03

21 בפברואר 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha03 משוחרר. גרסה 1.7.0-alpha03 מכילה את התחייבויות אלה.

שינויים ב-API

  • הוספה של קבוצות החלפה כדי לשפר את זיהוי השינויים (0941b5)

שיפורים בביצועים

  • שיפור הקצאת הזיכרון בזמן זיהוי שינויים (53e7fd)
  • תיקון דליפת זיכרון במלחין (0e097d)
  • משתמשים ב-ScopeMap כדי להעביר ביטולי תוקף כשכותבים מחדש (e19a7e)
  • מומלץ לבצע אופטימיזציה של המיפוי כדי לשמור רק את המצבים הנגזרים (f11c44)
  • החלפת IdentityArraySet שימושים בScatterSet (db572e)
  • אופטימיזציה של removeScope ב-ScopeMap (bb0530)

גרסה 1.7.0-alpha02

7 בפברואר 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha02 משוחרר. גרסה 1.7.0-alpha02 מכילה את התחייבויות אלה.

תיקוני באגים

  • ביטול התוקף של רכיבי lambda קומפוזביליים בתרכובות משנה באותה מסגרת. (98301c)
  • התקשרות חזרה אל onRelease באותו סדר שבו התקשרת אל onForgotten. (2cd790)
  • מצבים שהשתנו במסנן snapshotFlow (796b80)

שיפורים בביצועים

  • שינוי תמונת המצב של הצופה בזמן שהוא כבר שקוף. (f60f30)
  • אופטימיזציה של SnapshotIdSet.lowest(). (7ae149)
  • אפשר להשתמש ב-fold() ללא הקצאה ב-SnapshotIdSet. (532b7d)
  • הסרה של הקצאת איטרטור (83f96b)

גרסה 1.7.0-alpha01

24 בינואר 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha01 משוחרר. גרסה 1.7.0-alpha01 מכילה את התחייבויות אלה.

אופטימיזציות של ביצועים

  • הוספת היכולת ליצור משבצות אחרי הוספה של קבוצת צאצא (b5960c)
  • לבצע אופטימיזציה של שינויים בהקלטה של מצבי תמונת מצב (28c3fe)
  • הפעלת מצב דילוג מהיר (ed1766)

תיקוני באגים

  • חשבון עבור מטא של פרמטר ברירת מחדל בזכיר פנימי (096665)
  • הגדרה של currentCompoundHashKey כייחודית ביותר מקרים (d4a872)
  • מימוש קבוצות כשיוצאים מהפעלת פונקציה מוטבעת (2a90fc)

גרסה 1.6

גרסה 1.6.8

12 ביוני 2024

androidx.compose.runtime:runtime-*:1.6.8 משוחרר. גרסה 1.6.8 כוללת את ההתחייבויות האלה.

גרסה 1.6.7

1 במאי 2024

androidx.compose.runtime:runtime-*:1.6.7 משוחרר. גרסה 1.6.7 כוללת את ההתחייבויות האלה.

גרסה 1.6.6

17 באפריל 2024

androidx.compose.runtime:runtime-*:1.6.6 משוחרר. לא בוצעו שינויים מאז הגרסה האחרונה.

גרסה 1.6.5

3 באפריל 2024

androidx.compose.runtime:runtime-*:1.6.5 משוחרר. גרסה 1.6.5 כוללת את ההתחייבויות האלה.

גרסה 1.6.4

20 במרץ 2024

androidx.compose.runtime:runtime-*:1.6.4 משוחרר. גרסה 1.6.4 כוללת את ההתחייבויות האלה.

גרסה 1.6.3

6 במרץ 2024

androidx.compose.runtime:runtime-*:1.6.3 משוחרר. גרסה 1.6.3 כוללת את ההתחייבויות האלה.

גרסה 1.6.2

21 בפברואר 2024

androidx.compose.runtime:runtime-*:1.6.2 משוחרר. גרסה 1.6.2 כוללת את ההתחייבויות האלה.

גרסה 1.6.1

7 בפברואר 2024

androidx.compose.runtime:runtime-*:1.6.1 משוחרר. גרסה 1.6.1 כוללת את ההתחייבויות האלה.

תיקוני באגים

  • התקשרות חזרה אל onRelease באותו סדר שבו התקשרת אל onForgotten. (2cd790)
  • מצבים שהשתנו בסינון שאינם מתועדים ב-snapshotFlow. (796b80)

גרסה 1.6.0

24 בינואר 2024

androidx.compose.runtime:runtime-*:1.6.0 משוחרר. גרסה 1.6.0 כוללת את ההתחייבויות האלה.

שינויים חשובים מאז 1.5.0

תכונות חדשות

  • חריגים להטמעה מחדש שנבלעו במהלך לולאת הרכבה מחדש (4dff9a)

אופטימיזציות של ביצועים

  • לבצע אופטימיזציה של שינויים בהקלטה של מצבי תמונת מצב (28c3fe)
  • אופטימיזציה rememberSaveable (f01d79)
  • דחייה של קריאה מחדש של מצבים נגזרים עד לתיעוד השינויים (f38099)
  • שיפור של מתן ערכים מקומיים ליצירה (a337ea)

תיקוני באגים

  • תיקון דליפת זיכרון בטבלת מיקומי מודעות (73fcfe)
  • דילוג על הרכבה מחדש של הרכבות משנה שיוסרו. (Ieeb99, b/254645321)
  • הפעלה של מחזורי חיים של RememberObserver רק אם היא מאוחסנת בחישוב של זכירת הזיכרון. (f6b4dc)
  • הגבלת הצילום של $dirty ל-lambdas מוטבעות. (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 מכילה את התחייבויות אלה.

שינויים ב-API

  • הפצה של ערכי יציבות מסוימים בהערות. (274a4c)

תיקוני באגים

  • שימוש במדיניות הפניה למצב של היקף מקומי במצב הרכב בהקשר. (83361c)
  • הגבלת הצילום של $dirty ל-lambdas בתוך השורה. (acfca0)
  • לפעמים, אפשר לתקן תוכן שניתן להעביר בפורמט מקומי שגוי. (035cd6)
  • מומלץ להשתמש במיפויי גיבוב (hash) מהירים יותר שלא מקצים ב-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 מכילה את התחייבויות אלה.

שינויים ב-API

  • SnapshotStateList מסומן עכשיו כ-RandomAccess כדי לאפשר שימוש בגרסה הישירה של הוספה לאינדקס של עוזרים ברשימה. (I5210c, b/219554654)

גרסה 1.6.0-alpha06

20 בספטמבר 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha06 משוחרר. גרסה 1.6.0-alpha06 מכילה את התחייבויות אלה.

גרסה 1.6.0-alpha05

6 בספטמבר 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha05 משוחרר. גרסה 1.6.0-alpha05 מכילה את התחייבויות אלה.

גרסה 1.6.0-alpha04

23 באוגוסט 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha04 משוחרר. גרסה 1.6.0-alpha04 מכילה את התחייבויות אלה.

תכונות חדשות

  • חריגים להטמעה מחדש שנבלעו במהלך לולאת הרכבה מחדש (4dff9a)

שינויים ב-API

  • נוספה שיטה להשבתת 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)
  • כדי למנוע יצירה של קבוצה, התווית SideEffect מסומנת בתור @ExplicitGroupsComposable. (I74815)
  • להימנע מהשוואה של מפות מקומיות מסוג קומפוזיציה במקרה של שימוש חוזר (782071)

שינויים ב-API

  • נוספה עומס יתר של אותיות רישיות עבור CompositionLocalProviders, שמבטל את התקורה שמשמשת להאצה של הזנת ערכים מרובים, אבל גבוהה יותר כשמספקים ערך יחיד. (I6d640, b/288169379)

תיקוני באגים

  • תיקון דליפת זיכרון בטבלת מיקומי מודעות (73fcfe)
  • תיקון האופן שבו אנחנו משחזרים את rememberSaveable כאשר stateSaver מחזירה null (90748c)

גרסה 1.6.0-alpha01

21 ביוני 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha01 משוחרר. גרסה 1.6.0-alpha01 מכילה את התחייבויות אלה.

תיקוני באגים

  • דילוג על הרכבה מחדש של הרכבות משנה שיוסרו. (Ieeb99, b/254645321)
  • הקצאות מצומצמות יותר בהחלת תמונות מצב. (I65c09)
  • לא לחשב את readableHash בDerivedState אם תמונת המצב לא שונתה (68c565)

גירסה 1.5

גרסה 1.5.4

18 באוקטובר 2023

androidx.compose.runtime:runtime-*:1.5.4 משוחרר. גרסה 1.5.4 כוללת את ההתחייבויות האלה.

גרסה 1.5.3

4 באוקטובר 2023

androidx.compose.runtime:runtime-*:1.5.3 משוחרר. גרסה 1.5.3 כוללת את ההתחייבויות האלה.

גרסה 1.5.2

27 בספטמבר 2023

androidx.compose.runtime:runtime-*:1.5.2 משוחרר. גרסה 1.5.2 כוללת את ההתחייבויות האלה.

גירסה 1.5.1

6 בספטמבר 2023

androidx.compose.runtime:runtime-*:1.5.1 משוחרר. גרסה 1.5.1 כוללת את ההתחייבויות האלה.

גרסה 1.5.0

9 באוגוסט 2023

androidx.compose.runtime:runtime-*:1.5.0 משוחרר. גרסה 1.5.0 כוללת את ההתחייבויות האלה.

שינויים ב-API

  • הוסרו הקצאות הרכבה מחדש, אנימציות בצבע ו-AndroidComposeView. (Ib2bfa)
  • נוספה הערת @StateFactoryMarker, כדי לסמן פונקציות שיוצרות מצבים שחייבים להיכלל בקריאה מסוג remember. (I64550)
  • הוספה של גרסאות פרימיטיביות של State ושל MutableState (fb3d89)
  • נוסף Snapshot.isApplyObserverNotificationPending (I672a5)
  • נוספו גרסאות פרימיטיביות של ה-API State, שיאפשרו מעקב אחרי ערכים מסוג Int, Long, Float ו-2 אובייקטים ב-State בלי לצבור עונשים על Autoboxing. כדי להשתמש בהן, צריך להשתמש בשיטות המקוריות 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)
  • צריך לבצע קריאה חוזרת (callback) להשבתה עבור LayoutNode לפני הסרת ההשפעות 3784073
  • תיקון דגלים שהשתנו ב-lambdas שהופעלו מחדש ea81df9
  • תיקון רגרסיה של עריכה בזמן אמת במצב קומפוזבילי עם צמתים 73fd4d8
  • ON_STOP צריך להשהות את השידורים של שעון הפריים במקום השידורים מסוג ae276f1
  • ביטול התוקף של היקפים SnapshotStateObserver למצבים נגזרים ללא שינוי 84d9b1c
  • פתרון בעיות פוטנציאליות של מבוי סתום במהלך מחיקת יצירות 28761fc
  • תיקון של העברת תוכן ליצירה משנה 92d4156
  • תיקון דגלים שהשתנו ב-lambdas שהופעלו מחדש (8a03e9)
  • ביצוע קריאה חוזרת (callback) להשבתה של 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 Studio ובפלט של איתור השגיאות בקוד של הפרויקט, צריך לשנות את חומרת האזהרה מ'אינפורמטיבית' ל'אזהרה' (או גבוהה יותר), באמצעות הצהרה על warning "AutoboxingStateCreation" בתוך תצורת build.gradle או build.gradle.kts של המודול, כפי שמוצג (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

גרסה 1.5.0-beta03

28 ביוני 2023

androidx.compose.runtime:runtime-*:1.5.0-beta03 משוחרר. גרסה 1.5.0-beta03 מכילה את התחייבויות אלה.

תיקוני באגים

  • דילוג על הרכבה מחדש של הרכבות משנה שיוסרו. (Ieeb99, b/254645321)

גרסה 1.5.0-beta02

7 ביוני 2023

androidx.compose.runtime:runtime-*:1.5.0-beta02 משוחרר. גרסה 1.5.0-beta02 מכילה את התחייבויות אלה.

שיפורים בביצועים

  • אין לחשב את הערך של readableHash ב-DerivedState אם תמונת המצב לא שונתה. (307102)

גרסה 1.5.0-beta01

24 במאי 2023

androidx.compose.runtime:runtime-*:1.5.0-beta01 משוחרר. גרסה 1.5.0-beta01 מכילה את התחייבויות אלה.

שינויים ב-API

  • הוסרו הקצאות הרכבה מחדש, אנימציות צבע ו-AndroidComposeView (Ib2bfa)
  • נוספה הערה מסוג @StateFactoryMarker, לסימון פונקציות שיוצרות מצבים שחובה לכלול בתוך קריאה ל-remember. (I64550)
  • הוספה של גרסאות פרימיטיביות של State ושל MutableState (fb3d89)
  • נוסף Snapshot.isApplyObserverNotificationPending (I672a5)

תיקוני באגים

  • הקצאות מופחתות (I65c09, d7ea77, 727974 ו-445808 )
  • אני לא רוצה לשמור קובץ עזר של תמונת מצב ב-ComposerImpl (0206f7)
  • ביטול מהיר של כתיבת CoroutineScopes (a55362 ו-bd382f)
  • אין להשתמש בהרכבה פעמיים (f5791b)
  • מוודאים ביטול התוקף של ערכי מצב נגזרים לא מאותחלים (aa2a92)
  • קוראים לפונקציה onEndChanges במהלך נפטרים מהיצירה. (62cc8c)
  • תיקון של העברת תוכן להרכבה (4beb41)
  • תיקון מבוי סתום אפשריים (c1a425)
  • על ON_STOP להשהות את השידורים של שעון הפריים במקום בהרכבה (f4a2d1)
  • תיקון דגלים שהשתנו ב-lambdas שהופעלו מחדש (8a03e9)
  • ביצוע קריאה חוזרת (callback) להשבתה של LayoutNode לפני הסרת ההשפעות (8b0fa4)

תרומה חיצונית

  • נוסף Snapshot.isApplyObserverNotificationPending (I672a5)

גרסה 1.5.0-alpha04

10 במאי 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha04 משוחרר. גרסה 1.5.0-alpha04 מכילה את התחייבויות אלה.

שינויים ב-API

  • נוספו גרסאות פרימיטיביות של ה-API State, שיאפשרו מעקב אחרי ערכים מסוג Int, Long, Float ו-2 אובייקטים ב-State בלי לצבור עונשים על Autoboxing. כדי להשתמש בהן, צריך להשתמש בשיטות המקוריות 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 מכילה את התחייבויות אלה.

שינויים ב-API

  • כלי הכתיבה שנוצר לחלון של Android יחסום מעכשיו רק קריאות לwithFrameNanos במקום כל ההרכבה, כאשר תתקבל הודעת ON_STOP. המשמעות היא שחלונות המשויכים לפעילויות שהופסקו ימשיכו להתעדכן בשינויים בנתונים, אבל האנימציות, או כל קריאה אחרת של withFrameNanos, ייחסמו. (Id9e7f, b/240975572)

תיקוני באגים

  • תיקון קיפאון פוטנציאלי ברשימה של תמונות מצב ובמפה 5c1a425
  • צריך לבצע קריאה חוזרת (callback) להשבתה עבור 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 method 35a77d3
  • צריך לעדכן את מודול הכתיבה כדי להשתמש בתוספי ViewTreeLifecycleOwner 21c2122
  • שליחת ההתראות ל'החלת ההתראות' אחרי שה-Recomposer יסיים את המסגרת. 98f2641
  • תיקון קריסת האינדקס מחוץ לתחום כשמבטלים את Recomposer 8f8656f
  • תמיד לאלץ הזנה מחדש אם ספקי ההורה של הרכב שינו את 9526fcc
  • סבלנות בנושא Recomposer לגבי משימות שבוטלו 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 מכילה את התחייבויות אלה.

שינויים ב-API

  • הוספנו את ComposeNodeLifecycleCallback כדי לאפשר לך לראות את מחזור החיים של צמתים של כתיבה (I3731b)
  • הוספת את @TestOnly אל Composer.disableSourceInformation(), כי בטוח להפעיל את הפונקציה הזו רק בבדיקה. (I896c8)

תיקוני באגים

  • הסרת אגרוף בחיפושים מקומיים שקשורים ליצירה (62f66a)
  • שיפור מאפייני ההפניה לזיכרון במצב תמונת מצב (dfb451)

גרסה 1.4.0-alpha05

25 בינואר 2023

androidx.compose.runtime:runtime:1.4.0-alpha05 ו-androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 שוחררו. גרסה 1.4.0-alpha05 מכילה את התחייבויות אלה.

שינויים ב-API

  • עוד סוג/יכולת null של פונקציות inline/הוצא משימוש (I24f91)

גרסה 1.4.0-alpha04

11 בינואר 2023

androidx.compose.runtime:runtime-*:1.4.0-alpha04 משוחרר. גרסה 1.4.0-alpha04 מכילה את התחייבויות אלה.

שינויים ב-API

  • TestMonotonicFrameClock משתמש עכשיו בהערה ניסיונית נכונה. (I95c9e)

תיקוני באגים

  • הגנה על SnapshotStateObserver מפני רקורסיביות ו בו-זמניות (d902fb)

גרסה 1.4.0-alpha03

7 בדצמבר 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha03 משוחרר. גרסה 1.4.0-alpha03 מכילה את התחייבויות אלה.

שינויים ב-API

  • הוספת שיטה ציבורית חדשה למחלקה 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 מכילה את התחייבויות אלה.

שינויים ב-API

  • עכשיו, ב-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

טיפול בחריגים / תמיכה בעריכה בזמן אמת

מעקב אחר יצירה

ממשקי API של Reflection בקומפוזביליות

תיקונים בזמן הריצה

מערכת Snapshot

גרסה 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 מכילה את התחייבויות אלה.

תיקוני באגים

גרסה 1.3.0-beta01

24 באוגוסט 2022

androidx.compose.runtime:runtime-*:1.3.0-beta01 משוחרר. גרסה 1.3.0-beta01 מכילה את התחייבויות אלה.

שינויים ב-API

  • שיטת find נוספה אל CompositionData כדי לאפשר לכלים למפתחים שמשתמשים ב-API הזה למצוא במהירות קבוצת משנה של יצירה באמצעות הזהות שלה. (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 מכילה את התחייבויות אלה.

שינויים ב-API

  • בוצעה הוספה מחדש של ComposerKt.traceEventStart(Int, String) לתאימות לאחור (I6e6de)

גרסה 1.3.0-alpha01

29 ביוני 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha01 משוחרר. גרסה 1.3.0-alpha01 מכילה את התחייבויות אלה.

שינויים ב-API

  • העברת פונקציונליות של כלי שירות לסביבת זמן ריצה (I4f729)

גרסה 1.2

גרסה 1.2.1

10 באוגוסט 2022

androidx.compose.runtime:runtime-*:1.2.1 משוחרר. גרסה 1.2.1 כוללת את ההתחייבויות האלה.

תיקוני באגים

  • תיקון דליפת זיכרון: השמטת תמונות מצב בתוך תמונות שנוצרו מקובצי snapshot שקופים b/239603305

גרסה 1.2.0

27 ביולי 2022

androidx.compose.runtime:runtime-*:1.2.0 משוחרר. גרסה 1.2.0 כוללת את ההתחייבויות האלה.

שינויים חשובים מאז 1.1.0

  • סביבת זמן הריצה של Compose Runtime כללה מספר תכונות שנוספו בגרסה 1.2.0, יחד עם הרבה תיקוני באגים מיוצבים. התכונה החדשה המשמעותית ביותר הייתה הקדמה ל-movableContentOfAPI, שיכול לשמש כדי להפעיל חוויית משתמש מורכבת כמו מעברים משותפים בין רכיבים. ה-API של movableContentOf ממיר lambda קומפוזבילי ל-lambda שמעבירה את המצב, ואת הצמתים התואמים, לכל מיקום חדש שנקרא לו. כשהקריאה הקודמת יוצאת מההרכב, המצב נשמר באופן זמני ואם קריאה חדשה ל-lambda נכנסת להרכב, המצב והצמתים המשויכים עוברים למיקום של הקריאה החדשה. אם לא תתווסף שיחה חדשה, המצב יוסר באופן סופי והצופים יקבלו הודעה.

  • אם lambda של movableContentOf נקרא מספר פעמים באותו קומפוזיציה, נוצרים מצב חדש וצמתים חדשים לכל קריאה, וכשקריאות עוזבות את ההרכבה והקריאות החדשות נכנסות, המצב מועבר מהקריאות הראשונות לקריאות הנכנסות לפי הסדר שבו הן נקראות. שיחות חדשות שלא תבעו עליהן בעלות יוסרו באופן סופי.

  • בנוסף לתכונות החדשות האלה ולכמה תכונות חדשות אחרות, הוקדש זמן רב לייצוב מערכת המצב של סביבת זמן הריצה ו-Snapshot. דליפות זיכרון שונות הוסרו ונתיבי הקוד עברו אופטימיזציה.

  • בהמשך מופיעה רשימה מסכמת של השינויים:

תכונות חדשות ב-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 מכילה את שמירות האלה.

שינויים ב-API

  • ממשקים בספריות הרכבה נוצרים עכשיו באמצעות שיטות ברירת מחדל של 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!

שינויים ב-API

  • נוסף Snapshot.unsafeEnter/unsafeLeave (I108f3) ניסיוני
  • נוסף API ניסיוני של Snapshot.asContextElement() (Iff072)
  • עכשיו אפשר להשתמש בהערות ובהערות @ComposableTarget שמסומנות על ידי @ComposableTargetMarker בהיקף הקובץ באמצעות הקידומת @file. אם תשתמשו בהערת יעד בהיקף הקובץ, המהדר צריך להניח שכל הפונקציות הקומפוזביליות בקובץ נועדו לטרגט למיישם המשויך. לדוגמה, שימוש ב-@file:UiComposable מצהיר על כך שכל הפונקציות של @Composable מטרגטות לאפליקציה של ממשק המשתמש של 'כתיבה'. פונקציה שצריך לטרגט אליה מערכת הפעלה אחרת חייבת לספק באופן מפורש את ההערה של סמן היעד עבור הכלי הרצוי. (I40804)

גרסה 1.2.0-alpha08

20 באפריל 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha08 משוחרר. גרסה 1.2.0-alpha08 מכילה את התחייבויות אלה.

שינויים ב-API

  • הוספת את TracingInProgress לממשק של CompositionTracer. (Ic6f12)
  • הוספת recomposeScopeIdentity ל-Composer (I0c873)
  • ממשקי API מוגבלים למעקב (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 מכילה את התחייבויות אלה.

שינויים ב-API

  • נוספה הפונקציה החדשה 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 coroutines 1.6.0 (I3366d)

גרסה 1.2.0-alpha04

23 בפברואר 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha04 משוחרר. גרסה 1.2.0-alpha04 מכילה את התחייבויות אלה.

שינויים ב-API

  • נוספו ComposableTarget, ComposableTargetMarker וגם ComposableOpenTarget שמאפשר לקבל דיווח על זמן שבו פונקציה קומפוזבילית נקראת טירגוט לאפליקציה שהיא לא שמיועד לשימוש.

    ברוב המקרים, רכיב הכתיבה יכול להסיק את ההערות של המהדר (compiler), כך שהשימוש באנוטציות האלה ישירות צריך להיות נדיר . המקרים שלא ניתן להסיק כוללים יצירה ו באמצעות פונקציות קומפוזביליות מופשטות בהתאמה אישית (כמו שיטות ממשק), שדות או משתנים גלובליים lambdas קומפוזביליים (מסיקים משתנים ופרמטרים מקומיים), או כשמשתמשים ב-ComposeNode או בפונקציות קומפוזביליות קשורות.

    לאפליקציות קומפוזביליות בהתאמה אישית, פונקציה זו מפעילה את הפונקציות הקומפוזביליות ComposeNode או ReusableComposeNode צריכים להוסיף הערת CompoableTarget לפונקציה ולכל הערה אחרת סוגי פרמטרים קומפוזביליים של lambda. עם זאת, מומלץ כדי ליצור הערה שנוספה ComposableTargetMarker ולאחר מכן ייעשה שימוש בהערה המסומנת במקום ComposableTarget ישירות. הערה קומפוזבילית שמסומן ב-ComposableTargetMarker שווה ערך ל- ComposbleTarget בשם המוגדר במלואו של המאפיין class בתור הפרמטר 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 מכילה את התחייבויות אלה.

שינויים ב-API

  • נוספה movableContentOf שממירה תוכן קומפוזבילי lambda ל-lambda שמעבירה את המצב, ואת הצמתים התואמים, לכל מיקום חדש ששמו נקרא. מתי השיחה הקודמת עוזבת ההרכב, המצב נשמר באופן זמני ואם מתבצעת קריאה חדשה ללמבדה נכנס ליצירה ואז למדינה, צמתים יועברו למיקום של הקריאה החדשה. אם לא התקבלה שיחה חדשה שהמדינה תוסר באופן סופי, וחשוב לזכור שהצופים נשלחה הודעה.

    אם lambda מסוג movableContentOf נקרא כמה פעמים במצב אחד, נוצרים מצב חדש וצמתים חדשים לכל קריאה, וכמו כן, כשהשיחות מתחילות את היצירה, והשיחות החדשות נכנסות, המצב מועבר מהשיחות הראשונות ועד לשיחות שנכנסות, לפי הסדר נקראים. כל המדינות שלא נתבעו עליהן בעלות על ידי שיחות חדשות יוסרו באופן קבוע. (Ib4850)

  • הוספנו API למעקב אחרי הרכבה כדי לאפשר לכלים לבצע מספקים מעקב מפורט יותר אחרי פונקציות קומפוזביליות. המהדר יוצרת עכשיו קריאות ל-API למעקב, שכוללות מידע. (Ib0eb5)

    כדי להסיר את הקריאות האלה ואת המקור המשויך אליהן מגרסת build של גרסה, מוסיפים את כלל 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 מכילה את התחייבויות אלה.

שינויים ב-API

  • שדה identity נוסף אל CompositionData לצורך היצירה מזהים לא משתנים בבודק הפריסה. (Ic116e)

עדכונים בנושא תלות

  • עכשיו תלוי ב-Kotlin 1.6.10.

גרסה 1.1

גרסה 1.1.1

23 בפברואר 2022

androidx.compose.runtime:runtime-*:1.1.1 משוחרר. גרסה 1.1.1 כוללת את ההתחייבויות האלה.

תיקוני באגים

  • תיקון NullPointerException ב-androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • תיקון הקריסה שנגרמה בגלל תוכן שבלוח העריכה במהלך קריאה מ לוח העריכה ב-Android. (I06020, b/197769306)
  • RTL קבוע ב-LazyVerticalGrid (aosp/1931080, b/207510535)

גרסה 1.1.0

9 בפברואר 2022

androidx.compose.runtime:runtime-*:1.1.0 משוחרר. גרסה 1.1.0 כוללת את ההתחייבויות האלה.

שינויים חשובים מאז 1.0.0

  • תמיכה יציבה באפקט גלילת היתר ב-Android 12
  • שיפורים בגודל משטחי מגע
  • חשוב לשים לב: בכל הנוגע לניסוח 1.0, רכיבי Material ירחיבו את שטח הפריסה שלהם כך שיעמדו בהנחיות הנגישות של Material עבור גודל יעד המגע. לדוגמה, משטח המגע של הלחצן יתרחב לגודל מינימלי של 48x48dp, גם אם הגדרת את גודל הלחצן קטן יותר. זה מאפשר התאמה של חומרי הלימוד לאותה התנהגות של רכיבי Material Design, שמספק התנהגות עקבית אם משלבים בין תצוגות מפורטות לבין 'כתיבה'. השינוי הזה גם מבטיח שכשיוצרים את ממשק המשתמש באמצעות רכיבי 'חומר הכתיבה', צריך לעמוד בדרישות המינימליות לנגישות במשטח מגע.
  • תמיכה יציבה במסילת הניווט
  • שדרוג של מספר ממשקי API ניסיוניים שכבר היו ניסיוניים לגרסה יציבה
  • תמיכה בגרסאות חדשות יותר של Kotlin

גרסה 1.1.0-rc03

26 בינואר, 2022

androidx.compose.runtime:runtime-*:1.1.0-rc03 משוחרר. גרסה 1.1.0-rc03 מכילה את ההתחייבויות האלה.

תיקוני באגים

  • עודכנה לתמיכה בחומר 'כתיבה' 1.1.0-rc03

גרסה 1.1.0-rc01

15 בדצמבר 2021

androidx.compose.runtime:runtime-*:1.1.0-rc01 משוחרר. גרסה 1.1.0-rc01 מכילה את ההתחייבויות האלה.

גרסה 1.1.0-beta04

1 בדצמבר 2021

androidx.compose.runtime:runtime-*:1.1.0-beta04 משוחרר. גרסה 1.1.0-beta04 כוללת את ההתחייבויות האלה.

תכונות חדשות

  • עודכן להתאמה ל-Kotlin 1.6.0

גרסה 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 מכילה את התחייבויות אלה.

שינויים ב-API

  • הקוד של תמונת המצב פוצל למספר קבצים, אבל כולם עדיין נמצאים באותה מחלקה של 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 מכילה את התחייבויות אלה.

שינויים ב-API

  • הסרת את InternalCompilerApi משיטות ה-Composer חייב להיקרא חוצה-מודולים (I1aa0b)
  • Recomposer.state הוצא משימוש והוחלף ב- Recomposer.currentState כדי לשנות את הסוג שלו ל-StateFlow (Ic2ab3, b/197773820)

גרסה 1.1.0-alpha05

29 בספטמבר 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha05 משוחרר. גרסה 1.1.0-alpha05 מכילה את התחייבויות אלה.

גרסה 1.1.0-alpha04

15 בספטמבר 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha04 משוחרר. גרסה 1.1.0-alpha04 מכילה את התחייבויות אלה.

גרסה 1.1.0-alpha03

1 בספטמבר 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha03 משוחרר. גרסה 1.1.0-alpha03 מכילה את התחייבויות אלה.

תכונות חדשות

  • הכלי לכתיבה תומך עכשיו בגרסאות ישנות יותר של זמן הריצה לכתיבה (1.0). לפני השינוי הזה, הכלי לכתיבה היה תואם רק לזמן הריצה של 'כתיבה' של אותה גרסה ואילך. לאחר השינוי הזה, הכלי לכתיבה יתאים לגרסה ישנה יותר של זמן הריצה של 'כתיבה' (1.0). (aosp/1796968)
  • הכתיבה 1.1.0-alpha03 עודכנה בהתאם ל-Kotlin 1.5.30. (I74545)

גרסה 1.1.0-alpha02

18 באוגוסט 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha02 משוחרר. גרסה 1.1.0-alpha02 מכילה את התחייבויות אלה.

גרסה 1.1.0-alpha01

4 באוגוסט 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha01 משוחרר. גרסה 1.1.0-alpha01 מכילה את התחייבויות אלה.

גירסה 1.0

גרסה 1.0.5

3 בנובמבר 2021

androidx.compose.runtime:runtime-*:1.0.5 משוחרר. גרסה 1.0.5 כוללת את ההתחייבויות האלה.

תיקוני באגים

  • תוקן מכונות של conversionStateOf למעקב אחרי קריסה. (aosp/1792247)

גרסה 1.0.4

13 באוקטובר 2021

androidx.compose.runtime:runtime-*:1.0.4 משוחרר. גרסה 1.0.4 כוללת את ההתחייבויות האלה.

עדכונים בנושא תלות

  • עודכן לתלוי ב-Kotlin 1.5.31

גרסה 1.0.3

29 בספטמבר 2021

androidx.compose.runtime:runtime-*:1.0.3 משוחרר. גרסה 1.0.3 מכילה את ההתחייבויות האלה.

עדכונים בנושא תלות

  • עודכן לתלוי ב-Kotlin 1.5.30

גרסה 1.0.2

1 בספטמבר 2021

androidx.compose.runtime:runtime-*:1.0.2 משוחרר. גרסה 1.0.2 כוללת את ההתחייבויות האלה.

עודכנה לתמיכה בגרסה 'כתיבה' 1.0.2. הכתיבה 1.0.2 עדיין תואמת ל-Kotlin 1.5.21.

גרסה 1.0.1

4 באוגוסט 2021

androidx.compose.runtime:runtime-*:1.0.1 משוחרר. גרסה 1.0.1 כוללת את ההתחייבויות האלה.

עדכונים בנושא תלות

  • עודכן ל-Kotlin 1.5.21

גרסה 1.0.0

28 ביולי 2021

androidx.compose.runtime:runtime-*:1.0.0 משוחרר. גרסה 1.0.0 מכילה את ההתחייבויות האלה.

התכונות העיקריות של 1.0.0

זוהי הגרסה היציבה הראשונה של 'כתיבה'. לפרטים נוספים, מומלץ לעיין בבלוג הרשמי של תוכנית 'כתיבת תוכן'.

בעיות מוכרות

  • אם אתם משתמשים ב-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 מכילה את ההתחייבויות האלה.

  • מרוץ תהליכים תוקן ב-SnapStateObserver שגורם לדורבן חריגים מסוג NullPointer. (aosp/1763445, aosp/1758105, b/192677711)
  • תוקנו בעיות בקובצי snapshot של זמן ריצה, שגרמו ל-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 או בספרייה מקבילה. הקובץ מציין כלל בכל שורה, כאשר כלל במקרה הזה הוא דפוס להתאמה ל-methods או מחלקות בספרייה. התחביר של הכללים האלה הוא קבוצת-על של פורמט פרופיל 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 מציינת שזו שיטה שנקראת אחרי ההפעלה.

  • מחלקה שנמצאת בקובץ הזה מצביעה על כך שנעשה בו שימוש במהלך ההפעלה וצריך להקצות אותו מראש בערימה כדי למנוע את עלות הטעינה של הכיתה.

איך זה עובד?

  • ספריות יכולות להגדיר את הכללים האלה, שיישמרו בפריטי מידע שנוצרו בתהליך הפיתוח (Artifact) של AAR. לאחר מכן, כשמתבצעת בנייה של אפליקציה שכוללת את פריטי המידע האלה שנוצרו בתהליך הפיתוח (Artifact), הכללים האלה ממוזגים יחד, והכללים הממוזגים משמשים כדי ליצור פרופיל ART בינארי קומפקטי שמותאם ספציפית לאפליקציה. לאחר מכן, ART יכול להשתמש בפרופיל הזה כשהאפליקציה מותקנת במכשירים כדי ליצור מראש קבוצת משנה ספציפית של האפליקציה ולשפר את הביצועים שלה, במיוחד בהפעלה הראשונה. הערה: לא תהיה לכך השפעה על אפליקציות שניתנות לניפוי באגים.

גרסה 1.0.0-beta08

2 ביוני 2021

androidx.compose.runtime:runtime-*:1.0.0-beta08 משוחרר. גרסה 1.0.0-beta08 כוללת את ההתחייבויות האלה.

שינויים ב-API

  • State<T> נקראת עכשיו State<out T> (I69049)
  • שינוי אחד ב-API של ControlledComposition כדי לאפשר כתיבה מחדש בכתיבה מחדש של כרטיס יחיד. (Iaafd1, b/184173932)

גרסה 1.0.0-beta07

18 במאי 2021

androidx.compose.runtime:runtime-*:1.0.0-beta07 משוחרר. גרסה 1.0.0-beta07 מכילה את התחייבויות אלה.

שינויים ב-API

  • נוספו ממשקי API חדשים של מהדר כתיבה שמאפשרים פרטי המקור שהמהדר יצר מוסר במהלך הקטנת המקור. (Ia34e6)
  • מציגה את ReusableContent, שינסה להשתמש שוב צמתים בתוכן שלו במקום להחליף אותם כשהמפתח השתנה. כשהמפתח משתנה, הערכים הקודמים ב- המערכת מתעלמת מטבלת המיקומים של התוכן, מלבד את הצמתים שנוצרו וגם הערכים ששימשו לעדכון צמתים.

    מציגה את ReusableComposeNode שישתמש שוב בצומת נשלח במקום להחליף אותו כפי שנעשה עבור ComposeNode. (I1dd86)

  • @ComposeCompilerApi כבר לא @RequiresOptIn (Iab690)

תיקוני באגים

  • בשלב הזה, עד 2 פריטים שהיו פעילים בעבר יופיעו ב-LazyColumn/Line, גם אם הם נגללו כלפי מטה. כך הרכיב יכול לעשות שימוש חוזר בהרכבות המשנה הפעילות במקרה שנצטרך להרכיב פריט חדש, וכך תשפר את ביצועי הגלילה. Ie5555

גרסה 1.0.0-beta06

5 במאי 2021

androidx.compose.runtime:runtime-*:1.0.0-beta06 משוחרר. גרסה 1.0.0-beta06 מכילה את התחייבויות אלה.

שינויים ב-API

  • @ComposeCompilerApi כבר לא @RequiresOptIn (Iab690)

גרסה 1.0.0-beta05

21 באפריל 2021

androidx.compose.runtime:runtime-*:1.0.0-beta05 משוחרר. גרסה 1.0.0-beta05 מכילה את התחייבויות אלה.

שינויים ב-API

  • הוסר@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 מכילה את התחייבויות אלה.

שינויים ב-API

  • האפשרות 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 מכילה את התחייבויות אלה.

תיקוני באגים

  • לאכוף הגבלות על שימוש ציבורי בממשקי API ניסיוניים (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 מכילה את התחייבויות אלה.

זוהי הגרסה הראשונה של גרסת הבטא של 'פיתוח נייטיב' 1.0.0.

שינויים ב-API

  • הוספה של Recomposer.runRecomposeConcurrentlyAndApplyChanges API ניסיוני לחיבור מחדש של יצירות לא תקפות מהקובץ הראשי לולאת מסגרות. (I342d0)
  • כל תוכן קומפוזבילי שמסומן ב- @ReadOnlyComposable עכשיו מאומת בזמן הידור כדי להבטיח שהוא מבצע קריאות רק לתכנים אחרים מסוג @ReadOnlyComposables (I58961)
  • defaultFactory של compositionLocalOf וגם השדה staticCompositionLocalOf נדרש עכשיו במקום אופציונלי.

    בעקבות השינוי הזה, תהיה שגיאה מסוג 'סוג אפשרי' במקרה של ערך שאינו null סוגים שלא צוין בהם הגדרות יצרן בברירת מחדל. הפריט הקודם תספק הפניה null עבור סוג שאינו ערך null.

    עבור סוגים שאינם יכולים להיות בעלי ערך null, מומלץ לציין את { null } כברירת המחדל במפעל.

    אנחנו לא ממליצים להשתמש בתושבים מקומיים עם סוגים שאינם ערכי null, אלא אם אפשר לספק ברירת מחדל הגיונית. אם לא קיימת ברירת מחדל הגיונית, ה-lambda של defaultFactory אמור לגרום לחריגה. אבל גורם חריג פירושו שהצרכנים המקומיים תלות מרומזת בהינתן שלא נאכפת. לפי מערכת הסוגים. (Ifbd2a)

  • סמלים שהוצאו משימוש הוסרו מזמן הריצה של הכתיבה (I3252c)

  • emptyContent() שהוצא משימוש הוסר. במקומה צריך להשתמש במדיניות {}. (Idb33f, b/179432510)

  • השם 'ספקים' השתנה ל-CompositionLocalProvider

    • ה-Composition constructor לא מקבל יותר פרמטר מפתח, והוא הוצא משימוש.
    • השדה currentCompositeKeyHash הפך לנכס קומפוזבילי ברמה העליונה במקום לפונקציה קומפוזבילית ברמה העליונה.
    • CompositionData ו-CompositionGroup הועברו למרחב השמות androidx.compose.runtime.tooling
    • ComposableLambda נוצרה לממשק במקום למחלקה קונקרטית, והיא כבר לא כוללת פרמטרים של סוג.
    • הגרסה ComposableLambdaN הפכה לממשק במקום למחלקה קונקרטית, והיא כבר לא כוללת פרמטרים של סוג.
    • הפונקציה SnapshotFlow הועברה למרחב השמות androidx.compose.runtime
    • שיטת המיזוג של snapshotMutationPolicy כבר לא ניסיונית
    • הפונקציה @TestOnly ברמה העליונה clearRoots הוסרה. אין בו יותר צורך.
    • הפונקציות keySourceInfoOf ו-resetSourceInfo הוסרו. הם כבר לא נחוצים.
    • השדה Composer.collectKeySourceInformation הוסר. אין בו יותר צורך.
    • השיטות isjoinedKey, {1}joinKeyLeft ו-joinKeyRight הוסרו. הם כבר לא נחוצים.
    • ממשקי API שונים ברמה העליונה הועברו וארגנו מחדש בקבצים שונים. בגלל הסמנטיקה של מחלקות הקבצים של Kotlin, זה פוגע בתאימות בינארית אבל לא בתאימות מקורות, ולכן לא אמורה להיות בעיה עבור רוב המשתמשים.
    • (I99b7d, b/177245490)
  • snapshotStateObserver כבר לא ניסיוני (Id2e6a)

  • נמחקו כמה ממשקי API שהוצאו בעבר משימוש (Ice5da, b/178633932)

  • בוצעו השינויים הבאים ב-Material API:

    • נוסף פרמטר contentPuter ל-Top/BottomAppBar כדי לאפשר התאמה אישית של המרווח הפנימי שמוגדר כברירת מחדל.
    • סדר הפרמטרים של BackdropScaffold תואם להנחיות ה-API כאשר הפרמטרים הנדרשים מופיעים לפני פרמטרים אופציונליים.
    • הפרמטר icon הועבר ב-BottomNavigationItem אל אחרי selected ו-onClick.
    • השם של הפרמטר alwaysShowLabels השתנה ב-BottomNavigationItem ל-alwaysShowLabel.
    • שינית את השם של הפרמטרים bodyContent בכמה רכיבים ל-content בלבד.
    • הפרמטרים הוסדרו מחדש ב-ButtonDefaults.buttonColors(). לתשומת ליבכם: מכיוון שסוג הפרמטרים לא השתנה, לא תהיה שגיאה בקוד. עליכם לוודא שאתם משתמשים בפרמטרים בעלי שם או לעדכן את הסדר באופן ידני, אחרת הקוד לא יפעל כמו קודם.
    • הפרמטר secondaryVariant נוסף אל darkColors(). הצבע הזה בדרך כלל זהה ל-secondary בעיצוב כהה, אבל הוא מתווסף לעקביות ולהתאמה אישית נוספת.
    • הוסרו הקיצורים HeightionDefaults ו-animate יוצגו() מפלטפורמת ה-API הציבורית כי הם לא היו שימושיים או נפוצים.
    • השם של onValueChangeEnd שונה ב-Slider ל-onValueChangeFinished ולכן השם הוא null.
    • השם של הפרמטר 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 מכילה את התחייבויות אלה.

שינויים ב-API

  • התמיכה ב-ViewGroups הוסרה מ-UiApplier. התכנים הקומפוזביליים של emitView שהוצאו משימוש הוסרו. (Ifb214)
  • השם של CompositionReference השתנה ל-CompositionContext (I53fcb)
  • ElementActivity.setContent עבר אל androidx.activity.compose.setContent androidx.activity:activity-composition. (Icf416)
  • תמונת המצב של ה-API עודכנה כדי להיות עקבית יותר עם הנחיות ל-API וגם הסתרת סיווגי הטמעה פנימיים מה-API הציבורי. (Id9e32)
  • שינית את השם של 'סביבה' כך שיתאים לאווירה -> שינוי שם של CompositionLocal. לסביבה (I2d55d)
  • שינית את השם של Ambient ל-CompositionLocal ו-AmbientOf / staticAmbientOf ל-זניםLocalOf / staticCompositionLocalOf בהתאמה. השינוי הזה עוזר להבהיר את המטרה של CompositionLocal: מנגנון לאספקה או אחזור של ערכים באופן מקומי ליצירה. התחילית של מופעים של CompositionLocal צריכה להיות Local, למשל val LocalFoo = communicationLocalOf { Foo() }. (Ia55b6)
  • וגם 'צילום תמונה' ו'צילום מסך' להיות שיטות נלוות של snapshot. (I91f19)
  • הוצאנו משימוש את @ComposableContract ותשנו שלוש הערות ספציפיות יותר.

    התפקיד של @ComposableContract(restartable = false) השתנה ל-@NonRestartableComposable התפקיד של @ComposableContract(readonly = true) השתנה ל-@ReadOnlyComposable התפקיד של @ComposableContract(preventCapture = true) השתנה ל-@DisallowComposableCalls בוצעה הסרה של @ComposableContract(tracked = true). (I60a9d)

  • ריקContent() ו-(@Composable () -> Unit).orEmpty() הוצא משימוש כי אין להם יותר השפעה חיובית או ערך חיובי על הביצועים (I0484d)

  • snapshotFlow ו-withMutableSnapshot כבר לא ניסיוני (I6a45f)

  • עכשיו אפשר לסגור את היוצרים מחדש. אחרי שיוצרים מקבצים סגורים להמשיך את ההרכבה מחדש עד להשלמת קורוטין צאצאים. השם של Recomposer.shutDown השתנה כדי לבטל, כדי ליצור ניגודיות ביחס לסגירה. (Ib6d76)

  • פריט המידע שנוצר בתהליך הפיתוח (Artifact) מסוג compose:runtime-dispatch הוצא משימוש. עכשיו ניתן למצוא את MonotonicFrameClock בקובץ פיתוח: הידור:runtime ו- ניתן למצוא את AndroidUiDispatcher ב-Compose:ui. (Ib5c36)

  • ה-API שאליו מיועד הפלאגין של המהדר לכתיבה עבר ארגון מחדש לשימוש בממשק וגם סיווג קונקרטי. הממשק גם כבר לא משתמש פרמטר של סוג.

    זהו שינוי פנימי שלא אמור להשפיע על המקור תאימות לקוד, אבל היא שינוי בינארי שעלול לגרום לכשל. (I3b922, b/169406779)

  • הכניסה של SnapshotMutableState (Icfd03)

  • השם של DisposableenseDisposable השתנה ל-'Disposale חווית המשתמש' (Ica7c6)

  • הוסרה Recomposer.current(). [Abstract]ComposeView עכשיו כברירת מחדל של Recomposers שנוצרו באופן עצלני, ברמת החלון, המבוססים על ViewTreeLifecycleOwner לחלון. הרכב מחדש ו סימוני האנימציה המבוססים על withFrameNanos מושהים במהלך מחזור החיים של המארח הופסק. (I38e11)

  • ב-Recomposer.runningRecomposers יש עכשיו גרסה גלובלית של StateFlow של RecomposerInfo לקריאה בלבד לצורך צפייה במצב הרכב מתמשך את התהליך. יש לתת עדיפות ל-API הזה על פני Recomposer.current(), שעכשיו הוצא משימוש. (If8ebe)

  • השם של DisposableForceDisposable השתנה ל-'Disposale חווית המשתמש' (I3ea68)

גרסה 1.0.0-alpha11

28 בינואר 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha11 משוחרר. גרסה 1.0.0-alpha11 מכילה את התחייבויות אלה.

שינויים ב-API

  • onCommit , onDispose ו-onActive הוצאו משימוש לטובת ממשקי API של Side Effects ו-Sdisposable Effects (If760e).
  • ה-API של emit() וכל עומסי-היתר הוצאו משימוש והשם שלהם השתנה ל-ComposeNode. ממשקי ה-API זהים, רק שם שונה, כדי לפעול בהתאם למוסכמות מתן השמות של 'ניסוח אוטומטי' (I4137b)
  • inverify ו-CompositionReference() הוצאו משימוש לטובת currentRecomposeScope ו-MemoryCompositionReference בהתאמה. (I583a8)
  • remindObserver מחליף את CompositionLifecycleObserver ו-CompositionLifecycleObserver הוצא משימוש.

    RememberObserver הוא תחליף ל- CompositionLifecycleObserver עם סמנטיקה שונה ו שיטות עם שם חדש. המעבר ל-API החדש יכול להתבצע באופן מכני לאובייקטים שניתן לזכור רק פעם אחת, וממשיכים להיות השיטה המומלצת. אבל אם ההפניה זוכר יותר מפעם אחת ביצירה, onRemembered נקראת לכל הפניה שבה onEnter מופעל רק פעם אחת. onEnter נקרא מספר פעמים אם נעשה שימוש באובייקט בתרכובות משנה, כמו WithConstraints ו-Scaffold שהופכים את הסינגל ההתחייבות של onEnter לשיחה לא אמינה והיא הוסרה למשך RememberObserver

    הפונקציה RememberObserver מוסיפה את onAbandoned. תתבצע קריאה אם מופע אחד (RememberObserver) מוחזר מהקריאה החוזרת (callback) שהועברה אל remember, אבל הוא לא נשמר במצב היצירה ולכן אף פעם לא יתקשרו אל onRemembered. מי יכול מתרחשת במקרה שחריג מסיים יצירה לפני השלמת היצירה או היצירה בוטלה מכיוון שהמדינה מפיקה יצירה עבור כבר לא עדכנית או שכבר לא זמינה הדרושים. אם המופע של RememberObserver שמופיע אחרי הסינגל ההמלצה שצוינה למעלה היא לעקוב אחרי משאב חיצוני גם onForgotten וגם onAbandoned מציינים אינו נדרש יותר. אם האובייקט עוקב אחרי עבודה שהתחילו או הוקצו ב-onRemembered, onAbandoned אפשר להתעלם ממנו כי לא תיקרא אם onRemembered שנקראה. (I02c36)

  • אין לסמן פונקציות של collectAsState() כפונקציות מוטבעות (Ia73e4)

תיקוני באגים

  • בוצע יישום מחדש של withConstraints בתור BoxWithConstraints, ולהשאיר את base.layout. (I9420b, b/173387208)
  • להיעזר ב-TestCoroutineDispatcher בבדיקות (I532b6)

גרסה 1.0.0-alpha10

13 בינואר 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha10 משוחרר. גרסה 1.0.0-alpha10 מכילה את התחייבויות אלה.

שינוי משמעותי בשיבושים

  • שינוי המבנה של המהדר הפנימי ה-API מאפשר לקבץ שינויים באצווה בצמתים שנוצרו כתוצאה מההרכבה בתיבת 'החלת השינויים' שלב ההרכבה, אחרי כל הפונקציות של @Composable הושלמו.

    זוהי פגיעה התנהגותית שעשוי להשפיע על קוד האפליקציה, צמתים כבר לא זמינים מתוך בממשקי API ניסיוניים עד שהשינויים ייכנסו לתוקף הוחלו. בדרך כלל ניתן לפתור את הבעיה עם יחסי תלות כאלה תוכן קומפוזבילי: SideEffect כדי לדחות את הביצוע של עד שהצמתים נוצרו אותחל. (I018da)

שינויים ב-API

  • נוספה דרך לעקוב אם recomposer החיל שינויים. (I1b3e2)
  • הרחבת ממשקי ה-API של [Abstract]ComposeView כדי לאפשר מיחזור תצוגות שמבוססות על הרכבה, תוך השמטת ההרכב שלהן כדי ליצור מחדש מאוחר יותר. הוספת ממשקי API להתקנה וגילוי של מלחינים בהיקף חלון ו-CompositionReferences ליצירת יצירות צאצא.

    הוספה של אסטרטגיית תצוגה-הרכבה להגדרת סילוק של הרכבה האסטרטגיה של [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 מכילה את התחייבויות אלה.

שינויים ב-API

  • הוסרו OAuthTable, SlotReader ו- OAuthWriter מה-API הציבורי. האירועים האלה סומנו בתור InternalComposeAPI בעבר. עכשיו הם פנימיים למודול הכתיבה.

    CompositionData ו-CompositionGroup נוספו בתור מחליף את ui-tooling API שישמש לחילוץ מידע על היצירה. הקישורים האלה ציבוריים, אבל הם לא מיועד לשימוש מחוץ ל-ui-tooling API, כי הוא מספק המידע הגולמי שה-ui-tooling API מפרש (I31a9c)

  • סיווג Applier כבר לא נחשב (Id85b0)

  • הממשק של Applier השתנה כדי לפשט את הממשק עצים מלמטה למעלה במקום מלמעלה למטה.

    השם של ה-method insert() השתנה ל-insertTopDown().

    נוספה שיטה חדשה, insertBottomUp().

    המיישם מוסיף צמתים לעץ שהוא עורך באמצעות insertTopDown() או insertBottomUp(), בהתאם עם ביצועים טובים יותר.

    יש עצים, כמו LayoutNode ו-View, בגובה רב יותר יעיל לבנות מלמטה למעלה מאשר מלמעלה למטה. לפני השינוי הזה, נדרשה ערימה של תוספות כדי להטמיע היה צורך להעתיק לכל אפליקציה שבה נדרש מלמטה למעלה לשיפור הביצועים. לאחר השינוי הזה, Applier מבטל את insertBottomUp() כדי לבנות עץ מלמטה למעלה insertTopDown() כדי לבנות את העץ מלמעלה-למטה. (Icbdc2)

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

שינויים ב-API

  • נוספה בדיקת איתור שגיאות בקוד (lint) בשביל שמות ומיקום של פרמטרים קומפוזביליים של lambda, כדי לבדוק אם יש עקביות להנחיות לכתיבה. בנוסף, חלק מממשקי ה-API הועברו בעזרת children כשם של lambda בסוף, ל-content, בהתאם לבדיקת השגיאות בקוד ולהנחיות. (Iec48e)
  • Recomposer כבר לא מקבל EmbeddingContext; חובה יחסי תלות של תזמון מתקבלים מה-ImpactCoroutineContext. FrameManager הוצא משימוש; שילובי הפלטפורמה צריכים לאתחל איך להתמודד עם תמונת מצב גלובלית. (I02369)
  • השם של הפונקציהReStatorableStateHolder.withRestructableState השתנה ל-'RestorableStateProvider' (I66640)

תיקוני באגים

  • אלמנטים של אווירה שהוצאו משימוש, שהשם שלהם הוא Ambient, והוחלפו במאפיינים חדשים עם קידומת Ambient, שעומדים בהנחיות נוספות של Ambients ו-Compose API. (I33440)
  • מסירים את המודול הישן של בדיקת ה-ui-test ואת התוספת שלו (I3a7cb)

גרסה 1.0.0-alpha07

11 בנובמבר 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha07 משוחרר. גרסה 1.0.0-alpha07 מכילה את התחייבויות אלה.

תכונות חדשות

שינויים ב-API

  • ההערה @UnionType הוצאה משימוש (I57cde)
  • הפרמטר ProvideDefault נוסף כחלופה כדי לספק נתוני אווירה. אפשר להשתמש בו כדי לציין ערכי אווירה שיוגדרו רק כשלא סופקו כבר ערך סביבתי. (Id6635, b/171024925)
  • השם של LaunchedTask השתנה ל-LaunchedImpact כדי לשמור על עקביות בשילוב עם ממשקי ה-API של Side Effects ו-Seposable Effects. הופעל ללא אין להשתמש בפרמטרים של נושא כדי לעודד שיטות מומלצות. (Ifd3d4)
  • ל-Applier יש עכשיו קריאות חוזרות (callbacks) של onBeginChanges/onEndChanges מופעל כשה-Composer מתחיל או מסיים להחיל את השינויים על העץ. אפשר להשתמש בהם לאצוות לניהול משאבים במקרה הצורך. (Icf476)
  • Recomposer עכשיו דורש CoroutineContext בזמן הבנייה (Ic4610)
  • שינויים בהטמעה הפנימית של OAuthTable לא אמורה להשפיע על ה-API הציבורי. (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 מכילה את התחייבויות אלה.

שינויים ב-API

  • הכלי Recomposer הוא כעת CompositionReference ו הורה מסוג קומפוזיציה. עכשיו, פחות מקומות נדרשים להשתמש בכלי Recomposer ספציפי. (I4036f)
  • נוסף ממשק API מקביל של חד פעמי לאפקט לוואי, מילוי את התפקיד של onCommit-with-params אבל עם onDispose.
    • נוסף ReUpdateState API כדי לפרסם נתונים מהרכב מחדש ל- תהליכים מתמשכים או ארוכי טווח, כגון השפעות חד-פעמיות, UnlockedTasks.
    • (Id50b9)
  • ב-MutableVector מוטמע עכשיו RandomAccess (I85d73, b/170461551)
  • נוסף תופעות לוואי קומפוזביליות של החלת תופעות לוואי של לאובייקטים שמנוהלים על ידי ההרכבה. תופעת הלוואי היא שמיועד להחליף את התוכן הקומפוזבילי ב-onCommit. (Ia77c2)
  • ממשק API ניסיוני חדש, 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 מכילה את התחייבויות אלה.

שינויים ב-API

  • מגביל קלט מושהה ניסיוני Modifier.pointerInput (Ia77d2)
  • ביצועי הגלילה של LazyColumn/Line משופרים על ידי צמצום העבודה בשיטת המשנה בכל גלילה. ה-method החדש has Invalidations() נוספה למחלקה Composition. השם של המתודה hasPendingChanges() מ-Recomposer השתנה ל-hasUndoations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • הוספת generateState API להשקת קורוטינים מהרכב שמעדכנים ערך State<T> יחיד לאורך זמן (Id4a57)
  • השם שלlaunchInComposition השתנה ל-LaunchedTask כדי להתאים לכתיבה הנחיות ל-API (I99a8e)
  • הסדר של הקריאות Place() בפריסות בהתאמה אישית מגדיר עכשיו את סדר השרטוט של הצאצאים (Ibc9f6)

גרסה 1.0.0-alpha04

1 באוקטובר 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha04 משוחרר. גרסה 1.0.0-alpha04 מכילה את התחייבויות אלה.

שינויים ב-API

  • נוסף היקף הרשאות של בעלים כדי לאפשר איסוף של ולצייר היקפי תצפית ברגע שהם כבר לא בתוקף. (Ic4cf8)
  • נוסף זריקת derStateOf API כדי ליצור אובייקטים של מצב על סמך חישוב שעשוי לקרוא אובייקטים אחרים של מצב (If758b) (ולהפיק מהם).
  • נוסף ממשק API של TestOnly ל-SnapStateObserver (I6e2a9)

תיקוני באגים

  • Foundation.Box הוצא משימוש. במקומם צריך להשתמש ב- הטעינה הקמפיין base.layout.Box. (Ie5950, b/167680279)

גרסה 1.0.0-alpha03

16 בספטמבר 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha03 משוחרר. גרסה 1.0.0-alpha03 מכילה את התחייבויות אלה.

שינויים ב-API

  • 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 מכילה את התחייבויות אלה.

שינויים ב-API

  • הוספת ממשקי API של snapshotFlow ו-withMutableSnapshot לצריכה ויצירת שינויים בנתונים של תמונת המצב. (I3e722)
  • לפי המוסכמה של הקריאות לפונקציות קומפוזביליות השתנה. זהו שינוי תוכנה בינארית. כל הספריות חייבות להיות עברה הידור מחדש כדי לעבוד עם הגרסה הזו של הפלאגין מהדר (compiler) לכתיבה.

    השינוי הזה לא יוצר שינוי תוכנה שעלול לגרום לכשל ברמת המקור רק ממשקי API שהשתנו הם ממשקי API של מהדר שיש להם להפעיל אותו. (I7afd2, b/158123185)

  • הוסרו שיטות תזמון מ-EmbeddingContext (I7b9be)

  • onPreCommit הוצא משימוש; ב-onCommit יש עכשיו או התנהגות המשתמשים.

    onCommit ו-onActive פועלים עכשיו באותה מסגרת של כוריאוגרף. את השינויים בהרכב שבוצעו ולא בהתחלה של הפריים הבא של הכוריאוגרף. (I70403)

גרסה 1.0.0-alpha01

26 באוגוסט 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha01 משוחרר. גרסה 1.0.0-alpha01 מכילה את התחייבויות אלה.

גרסה 0.1.0-dev

גרסה 0.1.0-dev17

19 באוגוסט 2020

androidx.compose.runtime:runtime-*:0.1.0-dev17 משוחרר. גרסה 0.1.0-dev17 מכילה את ההתחייבויות האלה.

שינויים ב-API

  • עכשיו אנחנו יכולים להצהיר כי אחד או יותר מהקובעים של פליטת אנרגיה בהתאמה אישית אפשר לדלג על השלב הזה ולהרכיב אותו מחדש בנפרד מהפליטות. (Ibbd13)
  • הוסרו קריאות ל-frameManager שהוצאו משימוש.

    ממשקי ה-API הפנימיים לכתיבה השתנו כדי לצמצם את כמות במבט-על כדי לעקוב אחרי אובייקטים במצב כמו mutableStateof() (I80ba6)

  • התוכן הקומפוזבילי state { ... } הוצא משימוש לטובת קריאות מפורשות אל remember { mutableStateOf(...) } לשם הבהרה. כך יצטמצמו פלטפורמת ה-API ואת מספר המושגים ברמת המדינה ניהול, שתואם לדפוס by mutableStateOf() של הכיתה להעניק גישה לנכסים. (Ia5727)

  • השדה Flow.collectAsState קובע עכשיו את השולח שמוגדר כברירת מחדל מ- את היצירה עצמה, במקום להשתמש כברירת מחדל כ-dispatchers.Main. (I9c1d9)

  • קריסה כאשר משהו ששומר את המצב היה בשימוש בתוך לולאת <for> תוקנה. עכשיו מותר להשתמש באותו מפתח ב-SavedInstanceState() , ולכן ה-API של UiSavedStateRegistry מותאם עכשיו לדרישה החדשה הזו (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

תיקוני באגים

  • האפשרות emitView הוצאה משימוש. אם אפשר, כדאי להשתמש ב-AndroidView כדי לפטור תצוגות בתוך 'כתיבה'. הערה: בעתיד לא תהיה תמיכה ביצירת תצוגות מפורטות ו-ViewGroups באופן ישיר, אלא אם אלו עלים בעץ ההרכבה. במקרה כזה, אפשר יהיה לעשות זאת באמצעות AndroidView. (I29b1e, b/163871221)

גרסה 0.1.0-dev16

5 באוגוסט 2020

androidx.compose.runtime:runtime-*:0.1.0-dev16 משוחרר. גרסה 0.1.0-dev16 מכילה את ההתחייבויות האלה.

שינויים ב-API

  • מדיניות ברירת המחדל בנושא מוטציה של 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 בתור AnimationClockObservable כדי לגשר על הפער בין השעונים החדשים שמבוססים על שעוני קורוטינים לבין ממשקי ה-API שעדיין משתמשים ושעונים שמבוססים על קריאה חוזרת (callback).

    שווה הערך של MonotonicFrameClock ל-ManualAnimationClock עכשיו ManualFrameClock. (I111c7, b/161247083)

  • Modifier.stateDraggable השתנה לגמרי והשם שלו השתנה אל Modifier.sslideable. הושקה מחלקה חדשה של WAPableState, השדות של DrawerState ו-BottomDrawerState עברו ארגון מחדש והרשת ביניהם בירושה. [Modal/Bottom]DrawerLayout כבר לא מקבל פרמטר onStateChange. (I72332, b/148023068)

  • השירות Modifier.plus הוצא משימוש. במקומו צריך להשתמש ב-Modifier.then. 'אז' מקבלים אות חזק יותר של הזמנה, וגם אוסר על הקלדת Modifier.padding().background() + anotherModifier, דבר ששובר את השרשרת וקשה יותר לקרוא (Iedd58, b/161529964)

  • נוספה פריסת משנה. זהו פרימיטיבי ברמה נמוכה שמאפשר להרכיב את הצאצאים במהלך המדידה אם אנחנו רוצים להשתמש בערכים מסוימים שזמינים רק מאוחר יותר במהלך המדידה של הרכב עץ המשנה. לדוגמה, withConstraints לא מוטמע באמצעות SubcomposeLayout. (I25cc8)

  • השם של Material FilledTextField השתנה ל-TextField והשם של TextField השתנה ל-BaseTextField כדי שיהיה קל לגלות את ה-API הרצוי ולהשתמש בו (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 של 'כתיבה', צריך לעדכן את יחסי התלות בהתאם לקטעי הקוד החדשים שמוצגים למעלה בקטע הצהרה על יחסי תלות.

שינויים ב-API

  • ההערה @Model הוצאה משימוש. שימוש ב-State וב-MutableStateOf כחלופות. קיבלנו את ההחלטה הזו לגבי הוצאה משימוש אחרי דיון קפדני מאוד.

    הצדקה

    הנימוקים כוללים, בין היתר:

    • צמצום שטח הפנים והמושגים שנדרשים ללמד
    • קרוב יותר לערכות כלים דומות אחרות (Swift UI, React, Flutter)
    • החלטה שניתן לבטל אותה. תמיד נוכל להחזיר את @Model מאוחר יותר.
    • הסרת השימוש בתרחיש פינתי וקשה לענות על שאלות לגבי הגדרת @Model כדברים שדרושים לנו לטיפול
    • @Model סיווגי נתונים, השווה, hashcode וכו'.
    • איך אפשר להגדיר נכסים מסוימים כנכסים ש'תועדו' ואחרים לא?
    • איך אפשר לציין שוויון מבני לעומת שוויון יחסי לצורך תצפית?
    • מפחית את ה"קסם" במערכת. להקטין את הסבירות שמישהו יניח שהמערכת חכמה יותר ממה שהיא (כלומר, היא יודעת איך להבחין בין רשימות)
    • הופך את רזולוציית התצפית לאינטואיטיבית יותר.
    • שיפור יכולת הארגון מחדש ממשתנה -> נכס בכיתה
    • אפשרויות לבצע אופטימיזציות ספציפיות למדינה בעבודת יד
    • הפעולה הזו תואמת יותר לשאר המערכת האקולוגית ומפחיתה את אי-הבהירות לגבי בלתי ניתן לשינוי או לגבי "אימוץ מצב ניתן לשינוי".

    הערות העברה

    כמעט כל השימושים הקיימים ב-@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: שימוש ב-StateOf ובמשתמשים עם הרשאות גישה לנכס

    הגישה הזו קלה יותר בזכות מקבלי ההרשאה של Kotlin עם ה-API 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/14b/14

  • שינוי אסטרטגיית יצירת הקוד של המהדר (compiler) ב-Composer. לפני השינוי, המהדר (compiler) לכתיבה היה הופך קריאות לפונקציות קומפוזביליות. בעקבות השינוי הזה אנחנו ממירים עכשיו את הגוף של פונקציה קומפוזבילית ומשאירים את האתר קריאה ללא שינוי (לרוב).

    כלומר, רוב הלוגיקה של התקשורת עם סביבת זמן הריצה של הרכבה מתרחשת בתחילת גוף הפונקציה ולא בתחילת ה-callsite.

    צריך לבצע את השינוי הזה בהתאם למקור בכל שימוש בכתיבה. רוב המשתמשים בכתיבה לא יצטרכו לעדכן קוד כלשהו כתוצאה מהשינוי הזה.

    כדי לתמוך בפעולה הזו, חתימת ה-JVM של כל הפונקציות הקומפוזביליות השתנתה. פונקציה קומפוזבילית שמקבלת פרמטר יחיד הופכת לפונקציה שמקבלת 3 פרמטרים, והפרמטרים הנוספים הם Composer, שהוא מספר שלם 'מפתח'. מספר שלם ב-bitmask שמשמש להפצת מטא-נתונים באמצעות קריאות.

    עכשיו גם התכונה 'כתיבה' ממירה ארגומנטים שמוגדרים כברירת מחדל לפונקציה קומפוזבילית. היא עושה זאת בלי להוסיף עומס יתר סינתטי נוסף כברירת מחדל על הפונקציה עצמה, ולכן השינוי הזה יגרום לפחות הגדרה של פונקציות.

    שינויים התנהגותיים ידועים הנובעים מכך:

    1. חלק מהשיחות ידלגו על מקומות שלא היו מגיעים אליהם בעבר
    2. ביטויים קומפוזביליים בביטויי ארגומנטים שמוגדרים כברירת מחדל נרשמים עכשיו בצורה נכונה ומטופלים

    העבודה הזו כללה כמה אופטימיזציות: 1. התוצאה של השוואות של פרמטרים מופצת דרך תרשים הקריאה לפונקציות קומפוזביליות אחרות. התוצאה תהיה פחות השוואות בזמן הריצה, תקטין את גודל הטבלה של מיקומי המשבצות וכן יותר דילוג על פונקציות קומפוזביליות שלא דילגת עליהן בעבר 2. פרמטרים שנקבעים שהם "סטטיים" בזמן הקומפילציה כבר לא מושווים ולא מאוחסנים בזמן הריצה. הפעולה הזו גורמת לצמצום של מספר ההשוואות ולהקטנת טבלת המיקומים. 3. מבנה הזרימה של בקרה בגוף הפונקציות משמש לצמצום מספר הקבוצות שנוצרות. כך גודל הטבלה של מיקומי המשבצות מצטמצם ויש פחות עבודה בסביבת זמן הריצה 4. פרמטרים של שולח ומקלט שאינם בשימוש לפונקציות לא נכללים בקביעת יכולת הדילוג של הפונקציה אם לא נעשה בהם שימוש בתוך גוף הפונקציה.

    רוב שינויי התוכנה היו שעלולים לגרום לכשל בממשקי API שהמהדר מטרגט אליהם ישירות, והשימוש האופייני בכתיבה לא יושפע: 1. Composer::startExpr הוסר 2. Composer::endExpr הוסר 3. הממשק Composer::call הוצא משימוש 4. עומסי-החריגים שאינם משתנים של key הוסרו. מעכשיו צריך להשתמש בגרסה vararg. 5. ההערה הזו הוצאה משימוש. אפשר להשתמש ב-key כתחליף. 6. ScopeUpdateScope::updateScope השתנה כדי לצפות לפונקציה3 במקום פונקציה1 7. הפונקציה startableFunction ו-restartableFunctionN עודכנו וכוללים פרמטרים נוספים של זמן הידור (compile). (I60756, b/143464846)

  • נוספו המיון עם ו-removeRange ל-MutableVector (Icccf7)

  • נוספו הטמעות של שיטות ברירת מחדל עבור CompositionLifecycleObserver (I24289)

  • ל-Applier נדרשת עכשיו שיטת clear() כדי להשליך יצירות (Ibe697)

  • נוספה האפשרות asMutableList() ל-MutableVector כדי לאפשר זאת יועברו ל-API ציבורי בלי שיהיה צורך להעתיק את כל חדשה. (I298df)

  • נוספה תזכורתCoroutineScope() כדי לקבל נתונים מנוהלים CoroutineScope להשקת משימות בתגובה לאירועים. (I0e264)

  • MutableVector הוא אוסף חדש שאינו להטמיע כל אחד מהממשק הרגיל של איסוף נתונים. הזה מציע מהירות גבוהה מדרישות אחרות, שמיועדות לשימוש רק בהטמעות פנימיות. (I8ebd6)

  • בוצעה הסרה זמנית של StableMutableList ושל StableMutableMap כדי להימנע מבעיה בגרסת KotlinCompose. האלה הממשקים יופעלו מחדש אחרי עדכון הגרסה לגרסה של 'אימייל חדש' מ-Kotlin שאין להם את הבעיה.

    SnapshotStateList ו-SnapshotStateMap ציבוריים עכשיו, אבל הם יהיו הוצא משימוש לאחר השחזור של StableMutableList ו-StableMutableMap. (Ia7769)

  • הוספת הפונקציה withFrameNanos ברמה העליונה לתזמון האנימציה (Ie34c5)

  • הוצאנו משימוש את ההערה @ללא מעקב. מחליפים ב- @ComposableContract(tracked=false) (Id211e)

  • השם של אתחול הפונקציה מחדש וממשקי ה-API המשויכים אליו השתנה ל-ComosableLambda וכו'. ממשקי ה-API האלה טורגטו רק על ידי המהדר, כך שבאופן רגיל לא אמורה להיות לכך השפעה על תאימות ברמת המקור. שינוי השם נועד בעיקר כדי להסביר מה טוב יותר בכיתה הזו כשהיא מופיעה בדוחות קריסות (I7eb25)

  • הערה מסוג @Composable כבר לא תקפה במחלקות (Ia5f02)

  • השם Ambient<T> הוא עכשיו @Stable במקום @Immutable (I0b4bb)

  • לפני השינוי הזה, הפלאגין של המהדר לכתיבה היה לא מיירט קריאות למבנים בתוך פונקציה מסוג @Composable אם הייתה לו (I5205a, b/158123804)

  • התוכן הקומפוזבילי הוא כבר לא הפשטה מועילה. רוב ההרכבה מחדש אמורה להתרחש כתוצאה מהקצאות MutableState. מעבר לזה, מומלץ להשתמש בפונקציה invalidate כדי להפעיל הרכבה מחדש של ההיקף הנוכחי. (Ifc992)

  • מדד כבר לא הפשטה מועילה. אם צריך לשכפל אותו, אפשר לשכפל את ההטמעה שלו על ידי יצירת פונקציה קומפוזבילית שמפעילה פרמטר lambda קומפוזבילי. לדוגמה, @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37)

  • השימוש ב- @Direct בוטל לטובת @ComposableContract(restartable=false) (If4708)

  • נוסף מתאם ל-StateFlow שנוסף לאחרונה, שמאפשר לאכלס מראש את הערך הראשוני כך שהמצב המוחזר לא יכול להיות null (I61dd8 , b/156233789)

  • נוסף מתאם עבור 'זרימה'. דוגמה לשימוש: val value by flow.collectAsState() (If2198, b/153375923)

  • [ניתן לשינוי]האופרטורים להענקת גישה לנכסים במדינה עברו לתוספים לתמיכה באופטימיזציות של מקבלי גישה לנכס Kotlin 1.4. מתקשרים חייבים להוסיף מיובאים כדי להמשיך להשתמש ב-by state { ... } או ב-by mutableStateOf(...). (I5312c)

  • androidx.compose.ViewComposer הועבר אל androidx.ui.node.UiComposer הקובץ androidx.compose.Emittable הוסר. הפעולה הייתה מיותרת עם ComponentNode. בוצעה הסרה של androidx.compose.ViewAdapters. הם כבר לא תרחיש לדוגמה שנתמך. השדה Compose.composeInto הוצא משימוש. במקומו צריך להשתמש ב-setContent או ב-setViewContent. הכלי Compose.disposeComposition הוצא משימוש. במקום זאת, צריך להשתמש בשיטה dispose בעמודה Composition שהוחזרה על ידי setContent. androidx.compose.Compose.subcomposeInto הועבר אל androidx.ui.core.subcomposeInto השם של ComponentNode#emitInsertAt השתנה ל-ComponentNode#insertAt השם של ComponentNode#emitRemoveAt השתנה ל-ComponentNode#removeAt השם של ComponentNode#emitMode השתנה ל-ComponentNode#move (Idef00)

  • הדגל ComposeFlags.COMPOSER_PARAM עודכן ועכשיו הוא true, והוא ישנה את אסטרטגיית יצירת הקוד של הפלאגין של כתיבת הקוד. ברמה הכללית, זה גורם ליצירת פונקציות @Composable עם פרמטר סינתטי נוסף, שמועבר אל הפעלות @Composable נוספות כדי שסביבת זמן הריצה תוכל לנהל כראוי את הביצוע. עם זאת, זהו שינוי תוכנה בינארי משמעותי שעלול לשמר תאימות ברמת המקור בכל שימוש מאושר בכתיבה. (I7971c)

  • שינויי תוכנה ב-Ambis API פרטים נוספים זמינים במסמכי היומן ובמסמכי Ambient<T> (I4c7ee, b/143769776)

  • נוסף ui-livedata – פריט מידע שנוצר בתהליך פיתוח (Artifact) עם מתאם ל-LiveData. דוגמה לשימוש: val value by liveData.observeAsState() (Ie9e8c, b/150465596)

  • מתאמי Rx ללא ערך ראשוני מפורש הוצאו משימוש. השימוש ב-null הוא לא תמיד ברירת המחדל הטובה ביותר. לדוגמה, כשיש לכם רשימה, עדיף להתחיל עם emptyList() או בכל ברירת מחדל סבירה אחרת (I00025, b/161348384)

  • נוסף ui-rxjava2 - פריט מידע חדש שנוצר בתהליך פיתוח (Artifact) עם מתאמים ל-RxJava2. דוגמה לשימוש: val value by observable.signupAsState() (Ifab4b, b/153369097)

  • עכשיו אפשר להשתמש ב-savedInstanceState() עם סוגים שאינם מכילים נתונים (I6847f, b/153532190)

  • חדש listSaver() ו-mapSaver() כדי להקל על כתיבת אובייקטים של שמירה בהתאמה אישית (I8cf68, b/152331508)

  • פונקציות חדשות: savedInstanceState() ו-MemorySavedInstanceState(). הם דומים ל-state() ו-Memory() , אבל יש בהם תמיכה במצב מכונה שמור (If1987, b/152025209)

תיקוני באגים

  • השם של runOnIdleCompose השתנה ל-runOnIdle (I83607)
  • ממשק API ניסיוני של LayoutNode (I4f2e9)
  • androidx.ui.foundation.TextFieldValue וגם הפונקציה androidx.ui.input.EditorValue הוצאה משימוש. TextField, תכנים קומפוזביליים של FilledTextField ו-CoreTextField שנעשה בהם שימוש גם סוג זה הוצא משימוש. צריך להשתמש ב- במקום זאת androidx.ui.input.TextFieldValue (I4066d, b/155211005)
  • הוסרה התכונה DrawBackground שהוצאה משימוש API עם העדפה לתוסף RollBackground ממשקי API ב-Modifier. ארגון מחדש צבע, מברשת וציור רקע הטמעות כדי לצמצם את נתיבי הקוד כדרישה להסרה לצורך יצירת מגביל כחלק מהיצירה. (I0343a)
  • עודכנה רמה גבוהה יותר כתיבת ממשקי API שחושפים בד ציור במקום זאת, לחשוף את CanvasScope. הפעולה הזו תסיר הצורך של הצרכנים לשמור על אובייקטים של 'צייר'. למשתמשים עדיין נדרשת גישה ללוח הציור הוא יכול להשתמש בתוסף PaintCanvas שמאפשרת קריאה חוזרת (callback) לבעיה שרטוט של פקודות באמצעות קנבס. (I80afd)
  • ממשק ה-API של lambda בסופו של withConstraints השתנה. עכשיו, במקום שני פרמטרים, יש לו היקף מקלט, שבנוסף למגבלות ו-DeployDirection, מספק את המאפיינים minwidth, maxWidth, minHeight ו-maxHeight ב-Dp (I91b9a, b/149979702)
  • נוסף מקש מרווח סימטרי למרווח פנימי. (I39840)
  • עודכנו wrapContentwidth ו-wrapContentHeight כדי לצפות ליישור אנכי או אופקי, במקום יישור כלשהו. מקש הצירוף של כוח הכבידה עודכן לקבלת יישור אנכי או אופקי. השורות, העמודות והמקבץ עודכנו ועכשיו הם תומכים ביישור רציף בהתאמה אישית. (Ib0728)
  • השם של מודול ui-text השתנה ל-ui-text-core (I57dec)
  • שיפור של DrawModifier API:
    • יצרת את היקף המקבל עבור pull() ContentDrawScope
    • הוסרו כל הפרמטרים מ-Dock()
    • הממשק של DrawScope זהה לממשק הקודם של CanvasScope
    • ContentDrawScope כולל שיטת pullContent() (Ibaced, b/152919067)
  • הצבע של ColoredRect הוצא משימוש. במקומה צריך להשתמש במדיניות Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)
  • אופרטור הצירוף הוחלפה בפונקציות של תוספי היצרן (I225e4)
  • החברים ב-rowScope וב-ColumnScope נגישים עכשיו מחוץ ל-Row ול-Column. (I3a641)
  • השם של הפריסה הגמישה השתנה ל-Layoutweight (משקל). השם של הפרמטר 'נוח' שונה למילוי. (If4738)
  • withConstraints Get LayoutDirection (I6d6f7)
  • שינית את שם הרקע ל-DawBackground וברירת המחדל ל'חשוב לזכור' אותו (Ia0bd3)
  • סגנון הלחצנים הוחלף בפונקציות ייחודיות ועומס יתר של טקסט (מחרוזת). דוגמאות מעודכנות של פרטי שימוש. (If63ab, b/146478620, b/146482131)
  • runOnIdleCompose ו-runOnUiThread הן עכשיו פונקציות גלובליות במקום להשתמש ב-methods ב-ComposeTestRule. (Icbe8f)

תרומה חיצונית

  • מסירים ממשקי API לא נדרשים, כמו לופר ו-Handler, משכבת הניוד של סביבת זמן הריצה של הכתיבה (I6847d).
  • הוצאה משימוש של Flow<T>.collectAsState() ללא ערך ראשוני. צריך להשתמש ב-StateFlow<T> או להעביר ערך ראשוני מפורש. (I63f98, b/157674865)