פיתוח קוד איטרטיבי

כמפתחי אפליקציות לנייד, אתם בדרך כלל מפתחים את ממשק המשתמש של האפליקציה שלכם שלב אחרי שלב, ולא מפתחים הכול בבת אחת. ‫Android Studio תומך בגישה הזו באמצעות Jetpack Compose, ומספק כלים שלא דורשים בנייה מלאה כדי לבדוק, לשנות ערכים ולאמת את התוצאה הסופית.

Live Edit

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

יש שלושה מצבים של עריכה בזמן אמת:

  • ידני: שינויים בקוד מוחלים כשמבצעים דחיפה ידנית באמצעות Control+'‎ (Command+'‎ ב-macOS)
  • שמירה ידנית: שינויים בקוד מוחלים כששומרים אותם ידנית באמצעות Control+S (Command+S ב-macOS).
  • אוטומטי: השינויים יחולו במכשיר או באמולטור כשמעדכנים פונקציה שניתנת להרכבה.

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

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

תהליך העבודה המומלץ הוא כדלקמן:

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

איך מתחילים לערוך בשידור חי

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

הגדרת הפרויקט החדש

  1. לפני שמתחילים, צריך לוודא ש-Android Studio Giraffe או גרסה מתקדמת יותר מותקנים, ושרמת ה-API של המכשיר הפיזי או האמולטור היא לפחות 30.

  2. פותחים את Android Studio ובוחרים באפשרות New Project (פרויקט חדש) בתיבת הדו-שיח Welcome to Android Studio (ברוכים הבאים ל-Android Studio). אם כבר פתוח פרויקט, אפשר ליצור פרויקט חדש באמצעות קובץ > חדש > פרויקט חדש.

  3. בוחרים בתבנית Empty Compose Activity (פעילות ריקה של יצירת הודעה) עבור Phone and Tablet (טלפון וטאבלט), ואז לוחצים על Next (הבא).

    בחירת תבנית ב-Android Studio
    איור 1. תבניות שאפשר לבחור מתוכן. כדי לערוך בשידור חי, בוחרים באפשרות Empty Compose Activity.
  4. ממלאים את תיבת הדו-שיח New Project (פרויקט חדש) בפרטים הנדרשים: שם, שם חבילה, מיקום שמירה, SDK מינימלי ושפת הגדרת הבנייה.

    דוגמה להגדרות פרויקט משלב 4 שהוזנו ב-Android Studio
    איור 2. דוגמה להגדרות פרויקט.
  5. לוחצים על סיום.

הפעלת התכונה Live Edit

  1. כדי להפעיל את העריכה בזמן אמת, עוברים להגדרות.

    • ב-Windows או ב-Linux, עוברים אל קובץ > הגדרות > עורך > עריכה בזמן אמת.
    • ב-macOS, עוברים אל Android Studio > Settings > Editor > Live Edit.
  2. בוחרים באפשרות עריכה בזמן אמת ובמצב שרוצים להפעיל מתוך ההגדרות.

    במצב ידני, שינויי הקוד נדחפים בכל פעם שמקישים על Control+‎'‎ (Command+‎'‎ ב-macOS). במצב ידני, השינויים בקוד יחולו בכל פעם שתשמרו ידנית באמצעות Control+S (או Command+S ב-macOS). במצב אוטומטי, השינויים בקוד מוחלים במכשיר או באמולטור בזמן שאתם מבצעים אותם.

    ממשק המשתמש של תיבת הסימון 'עריכה בזמן אמת' בהגדרות של Android Studio
    איור 3. עריכת ההגדרות של עריכה בזמן אמת.
  3. בכלי העריכה, פותחים את הקובץ MainActivity, שהוא נקודת הכניסה לאפליקציה.

  4. לוחצים על הפעלה כפתור בממשק המשתמש כדי לפרוס את האפליקציה.

  5. אחרי שמפעילים את העריכה בזמן אמת, סימן הביקורת הירוק עדכני מופיע בפינה השמאלית העליונה של חלון הכלים מכשירים פועלים:

    ממשק המשתמש של Live Edit עם סימן וי ירוק

ביצוע שינויים ובדיקתם

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

לדוגמה, עורכים את השיטה הקיימת Greeting ב-MainActivity כך שתיראה כמו השיטה הבאה:

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

השינויים יופיעו באופן מיידי במכשיר הבדיקה, כמו שמוצג באיור 4.

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

פתרון בעיות ב-Live Edit

אם העריכות לא מוצגות במכשיר הבדיקה, יכול להיות ש-Android Studio לא הצליח לעדכן את העריכות. בודקים אם האינדיקטור של העריכה בזמן אמת מציין Out Of Date (לא עדכני), כמו שמוצג באיור 5, מה שמצביע על שגיאת קומפילציה. כדי לקבל מידע על השגיאה והצעות לפתרון שלה, לוחצים על האינדיקטור.

סמל של עריכה בזמן אמת שהיא לא עדכנית
איור 5. אינדיקטור של סטטוס העריכה בזמן אמת.

המגבלות של Live Edit

בהמשך מופיעה רשימה של ההגבלות הנוכחיות.

  • [רלוונטי רק ל-Android Studio Giraffe ולגרסאות מתקדמות יותר] כדי להשתמש בעריכה בזמן אמת, צריך Compose Runtime בגרסה 1.3.0 ואילך. אם הפרויקט שלכם משתמש בגרסה ישנה יותר של Compose, התכונה 'עריכה בזמן אמת' מושבתת.

  • [רלוונטי רק ל-Android Studio Giraffe ולגרסאות מתקדמות יותר] כדי להשתמש בעריכה בזמן אמת צריך AGP 8.1.0-alpha05 או גרסה מתקדמת יותר. אם בפרויקט שלכם נעשה שימוש בגרסה נמוכה יותר של AGP, התכונה 'עריכה בזמן אמת' מושבתת.

  • כדי להשתמש בתכונה 'עריכה בזמן אמת', צריך מכשיר פיזי או אמולטור עם רמת API של 30 ומעלה.

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

  • התכונה 'עריכה בזמן אמת' מאפסת את מצב האפליקציה בפעם הראשונה שמשנים פונקציית Compose בקובץ. זה קורה רק אחרי השינוי הראשון בקוד – מצב האפליקציה לא מתאפס על ידי שינויים בקוד שאתם מבצעים בפונקציות Compose בקובץ הזה.

  • יכול להיות שיהיה קנס מסוים על הביצועים של מחלקות ששופצו באמצעות Live Edit. אם אתם מעריכים את הביצועים של האפליקציה, כדאי להריץ אותה ולהשתמש בגרסת build נקייה.

  • כדי שהבאגים יפעלו על מחלקות ששיניתם באמצעות Live Edit, אתם צריכים להריץ את כל התהליך.

  • אפליקציה שפועלת עלולה לקרוס כשעורכים אותה באמצעות Live Edit. במקרה כזה, אפשר לפרוס מחדש את האפליקציה באמצעות הלחצן הפעלה UI
button.

  • התכונה 'עריכה בזמן אמת' לא מבצעת מניפולציה של קוד בייט שמוגדר בקובץ ה-build של הפרויקט – למשל, מניפולציה של קוד בייט שתתבצע כשהפרויקט ייבנה באמצעות האפשרויות בתפריט Build או בלחיצה על הלחצנים Build או Run.

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

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

  • התכונה 'עריכה בזמן אמת' תומכת רק בתהליכים שאפשר לנפות בהם באגים.

  • העריכה בזמן אמת לא תומכת בפרויקטים שמשתמשים בערכים מותאמים אישית עבור moduleName בקטע kotlinOptions בהגדרת ה-build.

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

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

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

  • בשלב הזה, התכונה 'עריכה בזמן אמת' לא תומכת בפרויקטים של Android Automotive.

שאלות נפוצות בנושא עריכה בזמן אמת

  • מה הסטטוס הנוכחי של עריכה בזמן אמת?

    התכונה 'עריכה בזמן אמת' זמינה ב-Android Studio Giraffe. כדי להפעיל את התכונה, עוברים אל File > Settings > Editor > Live Edit (ב-macOS:‏ Android Studio > Settings > Editor > Live Edit).

  • מתי כדאי להשתמש בעריכה בזמן אמת?

    משתמשים בעריכה בזמן אמת כשרוצים לראות במהירות את ההשפעה של עדכונים ברכיבי UX (כמו עדכוני משנים ואנימציות) על חוויית השימוש הכוללת באפליקציה.

  • מתי לא כדאי להשתמש בעריכה בזמן אמת?

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

  • מתי כדאי להשתמש בתצוגה המקדימה של הטיוטה?

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

פיתוח קוד איטרטיבי באמצעות Compose

התכונות 'עריכה בזמן אמת' ו'טעינה מחדש מהירה' ב-Compose Multiplatform יכולות לחסוך לכם זמן ולשפר את הפרודוקטיביות שלכם במהלך הפיתוח באמצעות Compose. עם זאת, הן משרתות צרכים שונים של התפתחות:

  • העריכה בזמן אמת תומכת בפיתוח איטרטיבי באמצעות Jetpack Compose לאפליקציות ל-Android. הוא מאפשר לעדכן רכיבים שניתנים להרכבה באמולטורים ובמכשירים פיזיים בזמן אמת. הפונקציונליות הזו מצמצמת את המעברים בין כתיבת קוד לבניית האפליקציה, ומאפשרת לכם להתמקד בכתיבת קוד למשך זמן ארוך יותר ללא הפרעות.

  • Compose Hot Reload מיועד לאותה מטרה, אבל הוא תומך באפליקציות למחשב שנוצרו באמצעות Compose Multiplatform. הכלי מאפשר לכם לבצע שינויים בקוד של ממשק המשתמש באפליקציית Compose Multiplatform ולראות את התוצאות בזמן אמת. לשם כך, הוא טוען מחדש את הקוד באופן חכם בכל פעם שמתבצע בו שינוי.

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

אם אתם מפתחים אפליקציית Android, כדאי להשתמש בתכונה 'עריכה בזמן אמת' כדי להאיץ את תהליך הפיתוח. אם אתם מפתחים אפליקציה למחשב באמצעות Compose Multiplatform, אתם צריכים להשתמש ב-Compose Hot Reload.

עריכה בזמן אמת של מחרוזות (יצא משימוש)

ב-Android Studio אפשר לעדכן בזמן אמת חלק מהערכים הקבועים שמשמשים בפונקציות Composable בתצוגות מקדימות, באמולטור ובמכשיר פיזי. ריכזנו כאן כמה סוגים נתמכים:

  • Int
  • String
  • Color
  • Dp
  • Boolean

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

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

הפעלת עריכה בזמן אמת של מחרוזות

החלת השינויים

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

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

משתמש לוחץ על הלחצן 'החלת שינויים'