מתחילים לפתח אפליקציות ל-ChromeOS

במכשירי ChromeOS, כמו Chromebook, יש תמיכה בחנות Google Play ובאפליקציות ל-Android. במאמר הזה נניח שיש לכם אפליקציה קיימת ל-Android שמיועדת לטלפונים או לטאבלטים, ואתם רוצים לבצע אופטימיזציה שלה ל-Chromebooks. במאמר פיתוח האפליקציה הראשונה ל-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 תומכת בהם.

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

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

עדכון גרסת ה-SDK היעד

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

שינוי הכיוון והצגה בכמה חלונות

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

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

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

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

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

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