Android Studio Dolphin | 2021.3.1 (ספטמבר 2022)

אלה התכונות החדשות ב-Android Studio Dolphin.

מה חדש בכתיבת אימייל

ריכזנו כאן את התכונות החדשות והשיפורים ב-Jetpack Compose ב-Android Studio.

תיאום אנימציה ב-Compose

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

קובץ GIF שבו מוצגת בדיקה עם ממשק המשתמש של כל האנימציות

כתיבת הערות של תצוגות מקדימות מרובות

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

ממשק המשתמש של הערות בתצוגה מקדימה לריבוי פריסות

ספירת רכיבי ה-Compose ששונו בכלי לבדיקת פריסות

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

עכשיו אפשר לראות ב-Layout Inspector מתי רכיבים נפרדים ב-Composeables בהיררכיית הפריסה עוברים עיבוד מחדש או מושמטים. המידע הזה מוצג בזמן אמת, בזמן האינטראקציה שלכם עם האפליקציה. כדי להתחיל, עליכם לוודא שהאפליקציה שלכם משתמשת ב-Compose בגרסה 1.2.0-alpha03 ואילך. לאחר מכן, פורסים את האפליקציה כרגיל.

ספירת קפיצות ותצוגה חדשה של ההרכב בכלי לבדיקת פריסות

פותחים את החלון Layout Inspector ומתחברים לתהליך האפליקציה. בComponent Tree (עץ הרכיבים) אמורות להופיע שתי עמודות חדשות לצד היררכיית הפריסה. בעמודה הראשונה מוצג מספר הקומפוזיציות בכל צומת. בעמודה השנייה מוצג מספר הדילוגים לכל צומת. אפשר לראות מידע דומה גם בחלונית Attributes (מאפיינים) כשבוחרים רכיב מורכב בComponent Tree (עץ הרכיבים) או בLayout Display (תצוגת הפריסה).

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

הפעלת מונה הקטעים והדילוגים בכלי לבדיקת פריסות

עדכון של הכלי להתאמת אמולטור Wear OS

החל מ-Android Studio Dolphin Canary 3, נוספו לכלי העזר להתאמת מכשירי Wear OS מאפיינים משופרים שמאפשרים לנהל ולחבר מכשירי Wear OS בקלות רבה יותר. עכשיו אתם יכולים:

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

כדי להשתמש בתכונות החדשות האלה, צריך לוודא שמהדמויי הטלפון שלכם יש רמת API 30 ומעלה, ושהאפליקציה Google Play Store מותקנת בהם. בנוסף, צריך לוודא שהמכשירים שלכם להדמיה של Wear פועלים ברמת API 28 ואילך. כדי לשדרג לתמונות המערכת העדכניות ביותר של המכשירים המדומים, עוברים אל Tools (כלים) > SDK Manager (מנהל SDK).

מידע נוסף זמין במאמר שימוש במדריך ההתאמה של אמולטור Wear OS.

סרגל הכלים המעודכן של אמולטור Wear OS

החל מ-Android Studio Dolphin Canary 2, בסימולטורים של Wear עם API ברמה 28 ואילך, סרגל הכלים של הסימולטור כולל עכשיו לחצנים שמחקים את הלחצנים הפיזיים והפעולות הנפוצות במכשיר. הלחצנים החדשים הם: לחצן 1 ולחצן 2 (לחצן 2 זמין רק ברמת API 30 ואילך), לחצן כף היד ולחצן הטיה. ריכזנו כאן כמה מהפעולות שאפשר לבצע באמצעות הלחצנים החדשים במהנת Wear:

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

מידע נוסף זמין במאמר ביצוע פעולות נפוצות במהלך הדמיה.

אמולטור של Wear עם לחצנים ספציפיים ל-Wear

הגדרות ריצה חדשות ל-Wear OS

נוספו הגדרות הפעלה חדשות כדי להריץ במהירות ולפתור באגים בממשקים ספציפיים ל-Wear OS, כמו תצוגות שעון, כרטיסי מידע ותכונות נוספות. אפשר ליצור את ההגדרות החדשות האלה בתיבת הדו-שיח Run/Debug Configurations כשמריצים את האפליקציה.

מידע נוסף זמין במאמר הגדרות הפעלה/ניפוי באגים של Wear OS.

הגדרות השקה חדשות של WearOS

Logcat חדש

Logcat עודכן כדי שיהיה קל יותר לנתח יומנים, להריץ שאילתות אחריהם ולעקוב אחריהם.

פורמט חדש

עכשיו Logcat מעצב יומנים כך שיהיה קל יותר לסרוק מידע שימושי, כמו תגים והודעות, ולזהות סוגים שונים של יומנים, כמו אזהרות ושגיאות.

פורמט חדש ליומני Logcat

יצירת כמה חלונות Logcat

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

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

יצירת כמה חלונות של logcat באמצעות חלוקות

מעבר בין הגדרות תצוגה קבועות מראש

עכשיו אפשר לעבור במהירות בין מצבי תצוגה שונים ב-Logcat בלחיצה על בורר מצב התצוגה: Standard,‏ Compact ו-Custom. לכל מצב תצוגה יש הגדרת ברירת מחדל שונה להצגת יותר או פחות מידע, כמו חותמות זמן, תגים ומזהי תהליכים (PID). אפשר גם להתאים אישית כל אחד ממצבי התצוגה שמוגדרים כברירת מחדל, וגם מצב תצוגה מותאם אישית, על ידי בחירה באפשרות שינוי התצוגה.

צילום מסך של מעבר בין מצבי תצוגה שונים

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

צילום מסך של תחביר השאילתה החדש עם השלמה אוטומטית

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

  • מזהי PID של פרויקט האפליקציה המקומי: package:mine
  • ערכים ספציפיים:
    • package:<package-ID>
    • tag:<tag>
    • level:[VERBOSE | INFO | ASSERT |DEBUG | WARN | ERROR ]
  • להחריג ערך ספציפי על ידי הוספת - לפני המפתח:
    • -tag:<exclude-tag>
  • כדי להשתמש בביטויים רגולריים עם מפתח נתון, מציבים ~ אחרי המפתח:
    • tag~:<regular-expression-tag>
    • שילוב עם תג ההחרגה: -tag~:<exclude-regular-expression-tag>

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

צילום מסך של היסטוריית השאילתות עם המועדפים

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

בעזרת Logcat החדש קל יותר לעקוב אחרי יומנים מהאפליקציה במהלך קריסות והפעלות מחדש של האפליקציה, כדי שלא תפספסו יומנים חשובים במהלך האירועים האלה. כש-Logcat מזהה שתהליך האפליקציה הופסק והופעל מחדש, תופיע הודעה בפלט – כמו PROCESS ENDED ו-PROCESS STARTED – כפי שמוצג בהמשך:

צילום מסך של הפעלות מחדש של תהליכים ב-logcat

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

מכשירים מנוהלים ב-Gradle

כדי לשפר את העקביות, הביצועים והאמינות בשימוש במכשירים וירטואליים של Android לבדיקות האוטומטיות שלכם עם כלי המדידה, אנחנו משיקים את Gradle Managed Devices. התכונה הזו, שזמינה ברמות API 27 ואילך, מאפשרת להגדיר מכשירי בדיקה וירטואליים בקובצי Gradle של הפרויקט. מערכת ה-build משתמשת בהגדרות כדי לנהל את המכשירים האלה באופן מלא – כלומר ליצור אותם, לפרוס אותם ולפרק אותם – כשאתם מריצים את הבדיקות האוטומטיות.

התכונה הזו מאפשרת ל-Gradle לראות לא רק את הבדיקות שאתם מריצים, אלא גם את מחזור החיים של המכשירים. כך תוכלו לשפר את חוויית הבדיקה בדרכים הבאות:

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

בנוסף, Gradle Managed Devices מציג סוג חדש של מכשיר אמולטור שנקרא Automated Test Devices‏ (ATD), שמותאם לשיפור הביצועים כשמריצים את בדיקות המדידה. בשילוב עם תמיכה בחלוקה של בדיקות לפלחים, תוכלו לנסות לפצל את חבילת הבדיקות לכמה מכונות ATD כדי לקצר את זמן הביצוע הכולל של הבדיקות. למידע נוסף על Gradle Managed Devices ועל התכונות המשויכות אליו, ראו התאמת הבדיקות לעומס באמצעות Gradle Managed Devices.

תמיכה ב-R8 באמצעות קובצי מיפוי שמבוססים על היסטורים של הוראות DEX

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

בנוסף, מכונות וירטואליות של Android החל מגרסה O‏ (רמת API 26) תומכות בהדפסת סטיות של הוראות בנתוני מעקב סטאק, אם אין למטהא את המידע על מספר השורה. כשמפעילים הידור עם minSdk 26 ואילך, ללא מידע על קובץ המקור, R8 מסיר לחלוטין את המידע על מספר השורה.

פונקציות lambda ללא מצב כבר לא עוברות תהליך הסרה של סוכריות (desugaring) כפונקציות יחידה (singletons)

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

R8 מונעת האטה באימות בסביבות זמן ריצה של Android

כדי למנוע בעיות בביצועים בסביבות זמן ריצה של Android‏ (Dalvik ו-ART), R8 (לא D8) כולל עכשיו stubs של ספריות ותרשימים של קריאות לשיטות של ספריות עבור שיטות וסוגים של ספריות שעשויות לא להתקיים בסביבת זמן הריצה. כך אפשר למנוע הרבה בעיות באימות ולשפר את הביצועים בסביבת זמן הריצה. התכונה הזו תמיד מופעלת.

תמיכה בממשקי API של JDK-11 עם הסרת סוכר מ-API של Java 8 ואילך

כשמשתמשים ביחס התלות coreLibraryDesugaring, יש עכשיו תמיכה בספריית הטמעה שמבוססת על JDK-11. מידע נוסף זמין desugar_jdk_libsביומן השינויים.

גרסאות תיקון

בהמשך מופיעה רשימה של גרסאות התיקון של Android Studio Dolphin.

Android Studio Dolphin | תיקון 1 לגרסה 2021.3.1 (אוקטובר 2022)

במסגרת הגרסה Patch 1, Android Studio Dolphin תומך עכשיו בפלאגין Kotlin 1.7.20. העדכון המשני הזה כולל גם את תיקוני הבאגים הבאים:

בעיות שתוקנו
Android Gradle Plugin
הרצת בדיקות Android עם מכשירי מדידה באמצעות gradle נכשלת בהסרת הסוכר (desugaring)
AGP 7.3.0 משבש את סנכרון Gradle בפרויקטים של פלטפורמת Gradle
Dexer‏ (D8)
הוספת ממשק API ציבורי לפתרון התנגשויות במיזוג DEX (כדי ש-bazel יאפשר כיתה כפולה)
ייבוא/סנכרון
ייבוא פרויקט Gradle נכשל אחרי שדרוג מתיקון 2 של Chipmunk (2021.2.1)
מקורות מידע
NPE ב-AarResourceRepositoryCache.createCachingData (AS Dolphin+)
Shrinker‏ (R8)
המטא-נתונים של Kotlin לא מועתקים כשמשנים את סוג השדות.
המרה לא צפויה של סוג לא מדויק: TOP (הכול)
Gradle 7.3.0 גורם לשגיאה ב-build של APK com.android.tools.r8.CompilationFailedException
הסרת מגדירי ברירת מחדל לא פעילים במצב תאימות.
התנגשות עם JetBrains Markdown
תמיכה ב-ThreadLocal.withInitial(java.util.function.Supplier
AGP 7.3 יוצר קובץ dex לכיתות עם קונסטרוקטור שבור
ניסיון לא צפוי לקבוע אם קוד שאינו CF צריך הסרה של סוכר
ktor VerifyError
Undefined value encountered during compilation thrown when processing okio-jvm 3.2.0
שגיאת הידור כתוצאה מהטמעת אובייקט של כיתה עם משתמשים עקיפים של instance-of
java.lang.IllegalAccessError עם R8 3.3.75