אנחנו ב-ChromeOS מחויבים לשפר את כלי הפיתוח ואת המסגרות שמאפשרים למפתחי אפליקציות ל-Android לבצע אופטימיזציה של האפליקציות שלהם למכשירי Chromebook בצורה חלקה. לכן, אנחנו מחפשים כל הזמן דרכים לספק למפתחים כלים משמעותיים שיעזרו להם לשפר את חוויית הפיתוח למסכים גדולים ול-ChromeOS.
מערכת ChromeOS התפתחה לאורך השנים ככל שהתגלו אתגרים חדשים. אחד האתגרים האלה הוא זיהוי בעיות קריטיות והעברתן למהנדסים מוקדם ככל האפשר. כללי ה-Lint הם הבסיס לאיכות, כי הם מספקים למפתחים אותות אזהרה לגבי בעיות שיתעוררו אם לא יטפלו בהן. כללי ה-lint המעודכנים שלנו מספקים למפתחים יותר נראות לגבי אופן ההפעלה של האפליקציות שלהם ב-ChromeOS, ומציגים בעיות, גם בתוכנה וגם בחומרה, שאין ספק שיגרמו לבעיות באפליקציות ל-Android שמופעלות בכל מכשיר ChromeOS.
כדי לקבל מידע נוסף על הרקע של כללי ה-lint האלה ועל החשיבות שלהם, כדאי לקרוא את הפוסט בבלוג שלנו.
איפה נמצאים כללי ה-lint האלה?
אנחנו מפתחים את התכונה באופן פעיל כבר כמה חודשים. בהתאם ללוח הזמנים של הגרסאות של Android Studio, חלק מכללי lint מוצגים בגרסאות Canary של Electric Eel. חלק מכללי ה-lint האלה זמינים עכשיו גם בגרסאות Canary של Flamingo. בחודשים הקרובים נמשיך לפתח את התכונות האלה כדי שיהיו זמינות בגרסאות היציבות של Android Studio.
חשוב לציין גם שהכללים האלה מופעלים כברירת מחדל בגרסאות חדשות יותר של Android Studio. המטרה היא לספק הנחיות מפורטות יותר לגבי האופן שבו אנחנו רוצים לעזור למהנדסים לפתח אפליקציות ל-ChromeOS ולמסכים גדולים יותר בעתיד.
כללי Lint חדשים (עודכנו החל מ-Flamingo Canary 3)
תמיכה ב-ABI של x86/x86_64
רוב מכשירי Chromebook פועלים על ארכיטקטורת Intel, ולכן הם פלטפורמה עם ארכיטקטורת x86 בעיקר. כדי ש-ChromeOS יתמוך בצורה תקינה כשקוד NDK נכלל כחלק מהקובץ הבינארי, שימוש ב-x86 משפר את הביצועים כי הוא מסיר את התרגום שנדרש מספריות ARM. לכן, מומלץ מאוד שצוות הפיתוח יוסיף תמיכה בארכיטקטורה x86 או עדיף x86_64, כי זה ישפר את הביצועים של כל קוד מקורי ב-ChromeOS או בכל מכשיר Intel.
פתרון
אם אפשר, מוסיפים את x86 ואת x86_64 בתוך abiSplits בתוך build.gradle. בנוסף, חשוב לוודא שאתם מוסיפים את הקוד לתיקיות המתאימות כדי לתמוך בממשקי ה-ABI האלה. מידע נוסף מופיע במאמר בנושא Android ABI ובשיחה בנושא ABI Support from ADS.
הערה: חשוב לוודא שלספריות של צד שלישי שכללתם ושנעשה בהן שימוש יש גם קבצים בינאריים של x86 ו-x86_64.
הגבלת חומרה ב-ChromeOS
ברוב מכשירי ChromeOS יש קבוצת דגימה קטנה יותר של חיישני חומרה ותכונות אחרות בהשוואה לטלפון Android. המטרה של הכלל הזה היא להודיע למפתחים שאם הם משתמשים בדגל <uses-feature> עם android:required=true, האפליקציה שלהם לא תהיה זמינה בחנות Google Play ב-ChromeOS. כדי לוודא שאפשר לגשת לאפליקציה שלך בכמה שיותר מכשירים, מומלץ לוודא שתכונת החומרה לא נדרשת כברירת מחדל. במקום זאת, אפשר להוסיף קוד הגנתי כדי לבדוק חומרה ספציפית בזמן הריצה. דוגמה לכך היא
<uses-feature android:name="android.hardware.camera" android:required="true">
פתרון
מוודאים שהתכונות שכלולות באפליקציה באמת נדרשות, ואם לא, משנים את הפרמטר android:required ל-false ומוסיפים תכנות הגנתי כשנדרשות קריאות ל-API. מידע נוסף מופיע במאמר בנושא הצהרה מפורשת על תכונות.
פעילויות שלא ניתן לשנות את הגודל שלהן
כברירת מחדל, Android Runtime ל-ChromeOS, שמריץ Android R ומעלה ב-Chromebook, מפעיל אפליקציית Android בגרסת הטלפון או בגרסת הטאבלט של האפליקציה, על סמך מצב ברירת המחדל של ממשק המשתמש. עם זאת, יש אפשרות שלישית שמאפשרת חוויה טובה יותר למשתמשי ChromeOS – מצב שינוי הגודל. אם תפעילו את הסימון הזה כחלק מהפעילות שלכם, משתמשים שיכולים להשתמש באפליקציה שלכם בכל סביבה של ריבוי חלונות יוכלו לשנות את הגודל של האפליקציה לגודל המתאים. השינויים האלה יאפשרו למשתמשים לשנות את גודל ממשק המשתמש בהתאם לצרכים שלהם. אחרי שמוסיפים את השינויים האלה למניפסט, צריך לבדוק את האפליקציה באמצעות אמולטור למחשב שמופיע בהמשך.
פתרון
מוסיפים את המאפיין resizableActivity="true" לפעילות בקובץ AndroidManifest.xml. מידע נוסף זמין במאמר בנושא הגבלות על מסכים גדולים.
שינויים בהגדרות
חשוב לדעת: בכל פעם שמשתמש משנה את גודל האפליקציה, הפונקציה onConfigurationChanged() מופעלת. אם האפליקציה מבצעת ציור מחדש מלא בתוך השיטה הזו, יהיו לכך השלכות על הביצועים. נכון לעכשיו, אנחנו בודקים כדי לוודא שלא מתבצעת קריאה ל-finish() בתוך onConfigurationChanged, כי צריך לטפל ב-savedInstanceState ברמת פירוט גבוהה יותר במקום לאלץ ציור מחדש מלא. נמשיך לחפש מקרים שבהם יתרחשו ירידה בביצועים ונעדכן את הכלל הזה בהתאם.
פתרון
מוודאים ש-finish() לא נקרא בתוך onConfigurationChanged() API בפעילויות ובקטעים. מידע נוסף זמין במאמר בנושא טיפול בשינויים בהגדרות.
תמיכה במקלדת ובעכבר
השימוש ב-Jetpack Compose הולך וגובר, ולכן רצינו לוודא שגם השימוש בספריות האלה יכלול מעכשיו תמיכה בעכבר ובמקלדת. עם הזמן, נמשיך לשפר את נוחות השימוש בעכבר, במקלדת, במשטח המגע ובאינטראקציות אחרות עם ציוד היקפי. כדי לקבל את חוויות הבסיס, תצטרכו לעדכן את יחסי התלות של Gradle לגרסאות המינימליות הנדרשות.
פתרון
מעדכנים את androidx.compose.foundation:foundation לגרסה 1.2 לפחות. מידע נוסף זמין בנתוני הגרסה של Compose.
כדאי לדעת: 90% מהמשתמשים מפעילים אפליקציות ב-Chromebook באמצעות מקלדת ועכבר. (מקור: נתונים פנימיים של Google משנת 2022*)
משוב
הצוות שלנו פועל כל הזמן לשיפור הכלים האלה והמסמכים שקשורים לאופטימיזציות למסכים גדולים. שלב חשוב בתהליך הזה הוא לשלוח לנו משוב על הדיוק והשימושיות של כללי ה-lint שנפרסים ב-Android Studio. כדי לעשות את זה, אתם יכולים לשלוח משוב על הכלל. כשכלל ה-lint מופיע ב-Android Studio, לוחצים על 'שליחת משוב על האזהרה הזו'. אמור להיפתח דו-שיח שדומה לזה שמופיע בהמשך. ככל שהמידע שתספקו יהיה מדויק ומפורט יותר, כך נוכל לבצע את השינויים הנדרשים מהר יותר.
