ברוב הטלפונים עם Android יש ערכות שבבים של ARM. עם זאת, במכשירי ChromeOS רבים נעשה שימוש בשבבי x86. ההבדל לא חשוב לאפליקציות שנכתבו ב-Kotlin או ב-Java. עם זאת, באפליקציות שנכתבו ב-Android NDK, כולל אפליקציות שנוצרו באמצעות מנועי משחקים, ערכת השבבים במכשיר יכולה להיות בעיה משמעותית.
מומלץ שכל האפליקציות עם קוד Android NDK יכללו את כל ארבעת ממשקי ה-ABI (ממשקי בינאריים של אפליקציות) העיקריים של Android: armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32) ו-x86_64.
כך אפשר להשיג את הביצועים הכי טובים ולצרוך הכי פחות סוללה בכל מכשיר. לדוגמה, קובץ build.gradle שמבוסס על cmake יכול להכיל:
externalNativeBuild {
cmake {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}גודל ה-APK
כל ABI בחבילת APK מונוליטית מגדיל את הגודל שלה. זה יכול להשפיע על השימוש בדיסק של המשתמשים, על גודל ההורדה של האפליקציה, ואולי גם על מגבלות הגודל בחנות Play. הדרך הטובה ביותר להימנע מכך היא שימוש בקובצי Android App Bundle. קובצי App Bundle מאפשרים לכם לארוז בקלות את כל ארבעת ממשקי ה-ABI מתוך Android Studio, אבל הם לא מגדילים את גודל ההורדה למשתמשים. הם גם מאפשרים לכם לנצל בקלות את היתרונות של העברה דינמית, כך שהמשתמשים יוכלו להוריד תוכן גדול של משחקים רק כשהם מבקשים זאת. אם לא ניתן להשתמש ב-App Bundles, אפשר להשתמש בשיטה הישנה יותר של multi-APK כדי להשיג התנהגות דומה.
32 ביט לעומת 64 ביט
כל האפליקציות ל-Android חייבות לספק גרסת build של 64 ביט. גרסת 32 ביט היא אופציונלית גם למכשירי ARM וגם למכשירי x86. מידע נוסף זמין במסמכי התיעוד בנושא Android 64-bit.
הפצה של גרסאות 64 ביט בלבד מצמצמת את מספר יעדי ה-Build שנדרשים ואת משטח הבדיקה, אבל היא גם מגבילה את סוגי המכשירים שיכולים להריץ את המשחק. לדוגמה, בגלל מגבלות חומרה אחרות, ב-Chromebooks ישנים רבים אפשר להפעיל רק אפליקציות Android בגרסת 32 ביט, למרות שיש להם מעבדי 64 ביט. כדי לוודא שהאפליקציה שלכם יכולה לפעול במכשירים האלה, צריך לכלול תמיכה ב-32 ביט וב-64 ביט.
הערה: כל האפליקציות החדשות והמעודכנות חייבות לכלול גרסת אפליקציה של 64 ביט. חנות Play הפסיקה להציג אפליקציות של 32 ביט במכשירים שיכולים להריץ אפליקציות של 64 ביט. במחשבי Chromebook רבים יש תמיכה ב-64 ביט, ואנחנו ממליצים לעדכן את האפליקציה בהקדם האפשרי כדי לכלול גרסת 64 ביט, וכך להבטיח המשכיות למשתמשי האפליקציה ב-ChromeOS.
תרגום ARM
מכשירי Chromebook עם x86 מנסים לתרגם קוד ARM בכל הזדמנות. עם זאת, התרגום מאט את הביצועים ומגביר את השימוש בסוללה. גם במשחקים פשוטים כדאי לספק גרסאות x86 build כדי להבטיח את חוויית המשתמש הטובה ביותר. אם אין לכם אפשרות לספק גרסאות x86, חשוב לדעת שבחלק ממכשירי Chromebook עם x86 אין אפשרות לתרגם קוד arm64. במקרה כזה, צריך לכלול ב-builds את שני ממשקי ה-ABI: arm32 ו-arm64.
אפשר לתרגם arm32 בכל מחשבי Chromebook עם Android, אבל לא בכל מחשבי Chromebook אפשר לתרגם קוד arm64. המשמעות היא שאם המשחק שלכם כולל רק יעדי בנייה של arm64, הוא לא יהיה זמין למספר גדול של מכשירי ChromeOS. אם אין לכם אפשרות לשלוח קבצים בינאריים של x86, עליכם לכלול ב-builds שלכם גם ממשקי ABI של arm32 וגם של arm64.
| ממשקי ABI כלולים | תמיכה ב-ChromeOS |
|---|---|
arm64 | גרועה |
arm32/arm64 | אישור (עם תרגום) |
arm32/arm64/x86_32/x86_64 | הכי טוב |