פיתוח גרסאות build ל-ChromeOS

מכשירי ChromeOS, כמו Chromebook, תומכים בחנות Google Play ובאפליקציות ל-Android. במסמך הזה אנחנו מניחים שיש לכם אפליקציה קיימת ל-Android שמיועדת לטלפונים או לטאבלטים, ואתם רוצים לבצע בה אופטימיזציה לשימוש במכשירי Chromebook. כדי ללמוד את העקרונות הבסיסיים של בניית אפליקציות ל-Android, אפשר לעיין במאמר בניית אפליקציית Android ראשונה.

עדכון קובץ המניפסט של האפליקציה

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

החל מגרסה M53 של ChromeOS, כל האפליקציות ל-Android שלא דורשות במפורש את התכונה android.hardware.touchscreen פועלות גם במכשירי ChromeOS שתומכים בתכונה android.hardware.faketouch. עם זאת, כדי שהאפליקציה תפעל בכל מכשירי Chromebook, צריך לעדכן את קובץ המניפסט כך שהתכונה android.hardware.touchscreen לא תהיה נדרשת, כמו שמוצג בדוגמה הבאה.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          ... >
    <!-- Some Chromebooks don't support touch. Although not essential,
         it's a good idea to explicitly include this declaration. -->
    <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />
</manifest>

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

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

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

עדכון ה-SDK של היעד

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

בדיקת דרישות הרשת

מכשירי Chromebook מריצים את כל מערכת ההפעלה Android במאגר, בדומה ל-Docker או ל-LXC. המשמעות היא שלאנדרואיד אין גישה ישירה לממשק ה-LAN של המערכת. במקום זאת, תעבורת IPv4 עוברת דרך שכבה פנימית של תרגום כתובות רשת (NAT), ותעבורת IPv6 unicast מנותבת דרך עוד קפיצה.

ברוב המקרים, חיבורים יוצאים מסוג unicast מאפליקציית Android לאינטרנט פועלים כמו שהם. בדרך כלל, חיבורים נכנסים חסומים. מנות Multicast או Broadcast מ-Android לא מועברות לרשת המקומית דרך חומת האש.

כחריג להגבלה על שימוש בשידור מרובה כתובות, מערכת ChromeOS מפעילה שירות שמעביר תנועת mDNS בין Android לבין ממשק ה-LAN, ולכן השימוש בממשקי ה-API הסטנדרטיים של גילוי שירותי רשת הוא הדרך המומלצת לגילוי מכשירים אחרים בפלח ה-LAN. אחרי שמאתרים מכשיר ברשת המקומית, אפליקציית Android יכולה להשתמש בשקעי TCP או UDP רגילים של שידור יחיד כדי לתקשר איתו.

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

שימוש יעיל באחסון בענן ובאחסון מקומי

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

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

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

פיתוח מקרי בדיקה חדשים לאפליקציה

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

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

אם אתם מעוניינים בטיפול ספציפי במכשיר קלט עבור קטגוריות מכשירים ספציפיות, אתם יכולים לציין את הערך android.hardware.type.pc כדי להשבית את מצב התאימות לקלט.

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

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

ריבוי חלונות ושינויים בכיוון

בסביבת ריבוי החלונות של ChromeOS, בעיות של שמירת מצב ושל אחזור נתונים יכולות להיות ברורות יותר. משתמשים ב-ViewModel כדי לשמור ולשחזר את המצב כשצריך.

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

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

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

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

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