מילות המפתח MUST, MUST NOT, SHOULD ו-STRONGLY RECOMMENDED במסמך הזה מפורשות כמו שמתואר ב-RFC 2119.
מערכת אורחת (תמונת מכונה וירטואלית)
הדרישות שבקטע הזה חלות על מערכת האורחים.
זיכרון
המערכת צריכה לספק לפחות 2 GB של זיכרון לכל מכונה וירטואלית.
ממשקי בינאריים של אפליקציות
הטמעות במכשיר:
- חייב להיות תואם לאחד או יותר מממשקי ה-ABI של Android NDK שהוגדרו.
- חובה להשתמש באותו Android NDK ABI לכל תמונות מכונות וירטואליות באותו מכשיר.
- חייבת להיות תאימות לקוד המקור (לדוגמה, תאימות לכותרת) ותאימות בינארית (לממשק ABI) לכל ספרייה נדרשת ברשימה הבאה.
- חובה לספק את כל הספריות הבאות, שמספקות ממשקי API מקוריים, לאפליקציות SDV:
-
libc(ספריית C) -
libdl(dynamic linker) -
libdrm.so(Direct Rendering Manager userspace library) libgbm.so(ניהול כללי של מאגר נתונים זמני)-
libEGL.so(native OpenGL surface management) -
libGLESv1_CM.so(OpenGL ES 1.x) -
libGLESv2.so(OpenGL ES 2.0) -
libGLESv3.so(OpenGL ES 3.x) -
liblog(רישום ביומן ב-Android) libtinyalsav2.so(הקלטת אודיו והפעלה)-
libvulkan.so(Vulkan)
-
- אסור להוסיף או להסיר את הפונקציות הציבוריות של הספריות המקוריות הקודמות.
- חובה לייצא את כל סמלי הפונקציות של OpenGL ES 3.1 ושל Android Extension Pack, כפי שמוגדר ב-NDK, דרך ספריית libGLESv3.so. שימו לב: כל הסמלים חייבים להיות נוכחים, אבל OpenGL ES מתאר בפירוט רב יותר את הדרישות לגבי המועד שבו צפויה הטמעה מלאה של כל פונקציה תואמת.
- חובה לייצא את סמלי הפונקציות של ליבת Vulkan 1.1, וגם את התוספים
VK_KHR_surface,VK_KHR_swapchain,VK_KHR_maintenance1ו-VK_KHR_get_physical_device_properties2דרך ספרייתlibvulkan.so. שימו לב שכל הסמלים חייבים להיות נוכחים, אבל Vulkan מתאר בפירוט רב יותר את הדרישות לגבי המועד שבו צפוי יישום מלא של כל פונקציה תואמת. - צריך לבנות אותו באמצעות קוד המקור וקבצי הכותרות שזמינים בפרויקט קוד פתוח של Android.
גרפיקה
- המערכת חייבת להשתמש ב-
virtio-gpuלעיבוד גרפי עם שיפור מהירות באמצעות חומרה. מומלץ שהדרייבר בצד האורח ישתמש ב-gfxstreamלעיבוד.
קלט
מערכת האורחים חייבת לכלול תמיכה באירועי קלט שמועברים ממערכת המארח באמצעות virtio-input.
OpenGL ES
הטמעות במכשיר:
- חובה לזהות בצורה נכונה את הגרסאות הנתמכות של OpenGL ES (1.1, 2.0, 3.0, 3.1, 3.2) באמצעות ממשקי ה-API המקוריים.
- חייבים לכלול תמיכה בכל ממשקי ה-API המקוריים התואמים לכל גרסה של OpenGL ES שהם תומכים בה.
- חייב לתמוך ב-OpenGL ES 1.1 וב-2.0.
- מומלץ מאוד לתמוך ב-OpenGL ES 3.1.
- צריך לתמוך ב-OpenGL ES 3.2.
- חובה לדווח באמצעות ממשקי ה-API המנוהלים של OpenGL ES וממשקי ה-API המקוריים על כל תוסף אחר של OpenGL ES שהם הטמיעו, ולהיפך, אסור לדווח על מחרוזות של תוספים שהם לא תומכים בהם.
- חובה לתמוך בתוספים הבאים:
EGL_EXT_image_dma_buf_importEGL_EXT_image_dma_buf_import_modifiersEGL_KHR_fence_syncEGL_KHR_image_baseEGL_KHR_wait_syncGL_OES_EGL_image
מומלץ מאוד להטמיע OpenGL ES במכשירים באמצעות ספריית ANGLE עם קצה עורפי של Vulkan.
Vulkan
הטמעות במכשיר:
- מומלץ מאוד לכלול תמיכה ב-Vulkan 1.3.
- אסור לתמוך בגרסת וריאציה של Vulkan (כלומר, החלק של הווריאציה בגרסת הליבה של Vulkan חייב להיות אפס).
- חובה לתמוך בתוספים הבאים:
VK_ANDROID_external_memory_android_hardware_bufferVK_EXT_external_memory_dma_bufVK_EXT_queue_family_foreignVK_KHR_external_memory_fdVK_KHR_external_semaphore_fd
תאימות למולטימדיה
הטמעות במכשירים חייבות לאפשר הפעלה של תוכן אודיו גולמי עם המאפיינים הבאים:
- פורמטים של מקור: PCM ליניארי, 16 ביט, 8 ביט, float
- ערוצים: מונו, סטריאו, הגדרות תקינות של ריבוי ערוצים עם עד שמונה ערוצים
- תדירויות דגימה (ב-Hz):
- 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 בהגדרות הערוץ שצוינו קודם
- 96,000 במונו ובסטריאו
הטמעות של מכשירים חייבות לאפשר לכידה של תוכן אודיו גולמי. לפחות, הטמעות של מכשירים חייבות לתמוך במאפיינים הבאים:
- פורמט: Linear PCM, 16 ביט
- תדירויות דגימה: 8,000, 11,025, 16,000, 44,100, 48,000 Hz
- ערוצים: מונו
הטמעות של מכשירים צריכות לאפשר לכידה של תוכן אודיו גולמי עם המאפיינים הבאים:
- פורמט: Linear PCM, 16 ביט ו-24 ביט
- תדירויות דגימה: 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 Hz
- ערוצים: מספר הערוצים שווה למספר המיקרופונים במכשיר
הטמעות של מכשירים חייבות לספק תמיכה בהפעלה ובצילום של אודיו באמצעות
libtinyalsav2.soAPI, תוך שימוש במכשירvirtio-soundלגישה לחומרה, וחייבות לתמוך ב-ALSA API.מקודדים ומפענחים של וידאו חייבים לתמוך לפחות באחד מפורמטי הצבעים YUV420 8:8:8 planar או semiplanar.
מפענחי וידאו ומקודדי וידאו חייבים לתמוך בקודק H.264 AVC.
הטמעות של מכשירים חייבות לתמוך בפרופיל הראשי של H.264 ברמה 3.1 ובפרופיל Baseline. התמיכה בסדר פרוסות שרירותי (ASO), בסדר גמיש של בלוקים מאקרו (FMO) ובפרוסות מיותרות (RS) היא אופציונלית.
מקודדי וידאו:
- חובה לתמוך בפרופילים של קידוד וידאו באיכות רגילה (SD) שמפורטים בטבלה הבאה.
צריכה להיות תמיכה בפרופילים של קידוד סרטונים באיכות HD, כמו שמופיע בטבלה הבאה.
איכות רגילה (איכות נמוכה) איכות רגילה (SD) HD 720p HD 1080p רזולוציית הווידאו 320 x 240 px 720 x 480 פיקסלים 1280 x 720 פיקסלים 1,920 x 1,080 פיקסלים קצב פריימים של סרטון 20 פריימים לשנייה 30 פריימים לשנייה 30 פריימים לשנייה 30 פריימים לשנייה קצב העברת נתונים של סרטון 384 Kbps 2 Mbps 4 Mbps 10 Mbps
מפענחי וידאו:
- חייב לתמוך בפרופילים של פענוח וידאו באיכות HD 720p שמופיעים בטבלה הבאה.
חובה לתמוך בפרופילים של פענוח וידאו באיכות HD 1080p שמופיעים בטבלה הבאה.
איכות רגילה (איכות נמוכה) איכות רגילה (SD) HD 720p HD 1080p רזולוציית הווידאו 320 x 240 px 720 x 480 פיקסלים 1280 x 720 פיקסלים 1,920 x 1,080 פיקסלים קצב פריימים של סרטון 30 פריימים לשנייה 30 פריימים לשנייה 60 fps 30 פריימים לשנייה קצב העברת נתונים של סרטון 800 Kbps 2 Mbps 8 Mbps 20 Mbps
הטמעות במכשירים חייבות לספק תמיכה ברכיבי Codec של מדיה באמצעות Video4Linux API.
הטמעות של מכשירים חייבות לספק גישה למפענח וידאו באמצעות חומרה באמצעות Video4Linux API.
כל מקודדי הווידאו והתמונות שפועלים באמצעות האצת חומרה חייבים לתמוך בקידוד של פריימים ממצלמות החומרה. הטמעות של מכשירים חייבות לספק גישה לחומרה לקידוד ולפענוח של סרטונים באמצעות
virtio-media.הטמעות של מכשירים חייבות לספק גישה למצלמת וידאו באמצעות Video4Linux API.
מערכת המארח (hypervisor וחומרה)
הדרישות שבקטע הזה חלות על מערכת המארח ועל סביבת ההיפר-ויז'ור.
וירטואליזציה
- בנוסף למכשירי
virtioשנדרשים בפרופיל הליבה, מערכת המארח חייבת לספק את הפריטים הבאים:-
virtio-gpu: עבור GPU וירטואלי ותצוגה -
virtio-input: להעברת אירועי קלט (לדוגמה, מגע, מקלדת) -
virtio-sound: למכשירי אודיו וירטואליים -
virtio-videoאוvirtio-media: למכשירי קודק וידאו וירטואליים
-
קלט
- המכשיר חייב לתמוך במכשירי קלט ולהעביר אירועים למערכות אורחות באמצעות
virtio-input. המכשיר צריך לתמוך בקלט של מצביע, לחצן ובקר סיבובי.