תמיכה באפליקציות במכשירי ChromeOS

אתם יכולים להשתמש בחנות Google Play כדי להתקין אפליקציות ל-Android בכמה דגמים של Google Chromebook. במאמר הזה מתוארים מכשירי Chromebook,‏ Chromebox ו-Chromebase שבהם אפשר להתקין אפליקציות ל-Android.

סקירה כללית

לרוב הטלפונים עם Android יש ערכות שבבים של ARM. עם זאת, במכשירי ChromeOS רבים נעשה שימוש בשבבי x86. ההבדל לא חשוב לאפליקציות בסיסיות שנכתבו ב-Kotlin או ב-Java. עם זאת, באפליקציות שנכתבו בקוד C/C++, כולל אפליקציות שנוצרו באמצעות מנועי משחקים, ערכת השבבים במכשיר יכולה להיות בעיה משמעותית.

מומלץ שכל האפליקציות והמשחקים עם קוד C/C++‎ יכללו את כל ארבעת ממשקי ה-ABI (ממשקי בינאריים של אפליקציות) העיקריים של Android: armeabi-v7a (arm32),‏ arm64-v8a (arm64),‏ x86 (x86_32) ו-x86_64. כך מתקבלים הביצועים הטובים ביותר וצריכת הסוללה הנמוכה ביותר בכל מכשיר. לדוגמה, קובץ build.gradle מבוסס cmake יכול להכיל:

Groovy

externalNativeBuild {
    cmake {
        abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
    }
}

Kotlin

externalNativeBuild {
    cmake {
        abiFilters("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
    }
}

גודל חבילת Android ‏ (APK)

כל ABI בחבילת APK מונוליטית מגדיל את הגודל שלה. הדבר יכול להשפיע על השימוש בדיסק של המשתמשים, על גודל ההורדה של האפליקציה ועל השאלה אם האפליקציה מושפעת ממגבלות הגודל בחנות Play. הדרך הטובה ביותר להימנע מכך היא שימוש בקובצי Android App Bundle.

קובצי App Bundle מאפשרים לכם לאגד את כל ארבעת ממשקי ה-ABI מתוך Android Studio בלי להגדיל את גודל ההורדה למשתמשים. הם גם עוזרים לכם לנצל את היתרונות של הצגה דינמית, ומאפשרים למשתמשים להוריד תוכן גדול של משחקים רק כשמתבקש. אם אי אפשר להשתמש ב-App Bundles, אפשר להשתמש בשיטה הישנה יותר של multi-APK כדי להשיג התנהגות דומה.

גרסאות build של 32 ביט ו-64 ביט

כל האפליקציות ל-Android חייבות לספק גרסת build של 64 ביט. גרסת build של 32 ביט היא אופציונלית גם למכשירי ARM וגם למכשירי x86. מידע נוסף זמין במאמר בנושא Android 64-bit⁠.

הספקת גרסאות Build של 64 ביט בלבד מצמצמת את מספר יעדי ה-Build שנדרשים ואת היקף הבדיקות, אבל היא גם מגבילה את סוגי המכשירים שבהם אפשר להריץ את המשחק. לדוגמה, בגלל מגבלות חומרה אחרות, במכשירי Chromebook ישנים רבים אפשר להפעיל רק אפליקציות ל-Android בגרסת 32 ביט, למרות שיש להם מעבדי 64 ביט. כדי לוודא שהאפליקציה שלכם יכולה לפעול במכשירים האלה, צריך לכלול תמיכה ב-32 ביט וב-64 ביט.

תרגום ARM

מכשירי Chromebook עם מעבד x86 מנסים לתרגם קוד ARM בכל הזדמנות, אבל התרגום מאט את הביצועים ומגדיל את השימוש בסוללה. כדי לספק את חוויית המשתמש הטובה ביותר, מומלץ לספק גרסאות build של x86. אם לא, צריך לכלול את שני ממשקי ה-ABI‏ (arm32 ו-arm64) בגרסאות ה-build, כי יכול להיות שבחלק ממכשירי ה-Chromebook עם x86 לא תתבצע תרגום של קוד arm64. לדוגמה, בגלל מגבלות חומרה אחרות, במכשירי Chromebook ישנים רבים אפשר להפעיל רק אפליקציות ל-Android ב-32 ביט, למרות שיש להם מעבדי 64 ביט. כדי שהאפליקציה תפעל במכשירים האלה, צריך לכלול תמיכה ב-32 ביט וב-64 ביט.

למרות שתרגום arm32 זמין בכל מכשירי Chromebook עם Android, לא בכל מכשירי Chromebook אפשר לתרגם קוד arm64. המשמעות היא שאם במשחק שלכם יש רק יעדי בנייה של arm64, הוא לא יהיה זמין למספר גדול של מכשירי ChromeOS. אם אין לכם אפשרות לשלוח קבצים בינאריים של x86, עליכם לכלול ב-builds שלכם גם ABI של arm32 וגם ABI של arm64.

ממשקי ABI כלולים תמיכה ב-ChromeOS
arm64 גרועה
‫arm32 ו-arm64 אישור (עם תרגום)
‫arm32,‏ arm64,‏ x86_32 ו-x86_64 הכי טוב