בדף הזה מופיע סיכום של התכונות העיקריות בגרסה Android 9, וקישורים למידע נוסף. סיכומי התכונות האלה מסודרים לפי המיקום של התיעוד של התכונה באתר הזה. במאמר עדכוני האתר מאוגוסט 2018 מוסבר איך להעביר ולשנות שמות של קטעים.
פיתוח פתרונות
תמונת מערכת גנרית (GSI)
תמונת מערכת גנרית (GSI) היא תמונת מערכת עם הגדרות מותאמות למכשירי Android. תמונת מערכת כללית (GSI) כוללת פרטים על ההבדלים בין תמונות GSI למכשירים שמופעלת בהם מערכת Android 9 ולמכשירים שמשדרגים ל-Android 9.
ארכיטקטורה
שיטת הפשטת חומרה (HAL)
תאימות לאחור של מסגרת HIDL
אימות התאימות לדורות קודמים של מסגרת HIDL הוא שיטה לאימות התאימות לדורות קודמים של המסגרת.
שכבות HAL שזמינות באופן דינמי
HALs זמינים באופן דינמי תומכים בהשבתה דינמית של מערכות משנה של חומרה ב-Android כשהן לא בשימוש או לא נדרשות.
HIDL
HIDL MemoryBlock
HIDL MemoryBlock היא שכבה מופשטת שנבנתה על hidl_memory, HIDL @1.0::IAllocator ו-HIDL @1.0::IMapper. הוא מיועד לשירותי HIDL שיש להם כמה בלוקים של זיכרון שחולקים ערימת זיכרון אחת.
שכבות-על של פירוט מבנה המכשיר (DT)
שכבות-על דחוסות
Android 9 ואילך כולל תמיכה בשכבות-על דחוסות בתמונת שכבת העל של ה-blob של עץ המכשיר (DTBO) כשמשתמשים בגרסה 1 של כותרת הטבלה של עץ המכשיר.
עדכונים ב-DTO
ב-Android 9 ואילך, כדי לשנות את המאפיינים שמוגדרים בשכבות-על של עץ המכשיר (DTO), צריך לוודא שמטען האתחול מעביר את ה-blob של עץ המכשיר המאוחד לליבת המערכת.
ניהול גרסאות של כותרות תמונות DTBO
Android מגרסה 9 ואילך כולל שדה גרסה בכותרת של תמונת DTBO.
אימות DTBO
ב-Android מגרסה 9 ואילך נדרשת מחיצת DTBO. כדי להוסיף צמתים או לבצע שינויים במאפיינים ב-SoC DT, טוען האתחול צריך להוסיף באופן דינמי שכבת-על של DT ספציפי למכשיר על SoC DT. מידע נוסף זמין במאמר בנושא קומפילציה ואימות.
תאימות של ליבה
Android 9 ואילך כולל דרישות שמשפיעות על הליבה, על הממשקים שלה ועל השימוש ב-DTBO. מידע נוסף זמין בדפים הבאים:
- עדכונים וגרסאות יציבות של ליבת המערכת
- Android Common Kernels
- דרישות ליבת מודולרית
- דרישות הממשק
- Device Tree Overlays
Vendor NDK
שינויים בעיצוב
מידע על שינויים בעיצוב של VNDK ב-Android מגרסה 9 ואילך זמין בדפים הבאים:
- ערכת פיתוח מקומית לספק (VNDK)
- תמיכה במערכת בנייה של VNDK
- VNDK Definition Tool
- ספריות, כללים ו-sepolicy
- VNDK Extensions
- מרחב שמות של Linker
בודק ABI
בדף ABI Stability מוסבר על הכלי לבדיקת Application Binary Interface (ABI), שמוודא שהשינויים שנעשים בספריות VNDK שומרים על תאימות ל-ABI.
תמונות מצב של VNDK
תמונת מערכת יכולה להשתמש בתמונות מצב של VNDK כדי לספק את ספריות ה-VNDK הנכונות לתמונות ספקים, גם אם תמונות המערכת והספקים נוצרו מגרסאות שונות של Android.
אובייקט ממשק של ספק (אובייקט VINTF)
בדפים הבאים בקטע Vendor Interface Object מתוארים עדכונים ב-Android מגרסה 9 ואילך:
לוח זמנים להוצאה משימוש של HIDL
בדפים הבאים מוסבר איך מערכת Android מוציאה משימוש ומסירה את HIDL HALs:
תוכנת אתחול
מחיצות מוצרים
Android מגרסה 9 ואילך תומך ביצירת מחיצות /product באמצעות מערכת ה-Build של Android. בעבר, ב-Android 8.x נאכף ההפרדה של רכיבים ספציפיים של מערכת על שבב (SoC) ממחיצת /system למחיצת /vendor בלי להקצות מקום לרכיבים ספציפיים של יצרן ציוד מקורי (OEM) שנבנו ממערכת ה-Build של Android.
תאימות לסיבת אתחול קנונית
בדף Canonical Boot Reason מתוארים שינויים במפרט של סיבת האתחול של טוען האתחול ב-Android מגרסה 9 ואילך.
המערכת כבסיס
כל המכשירים עם Android מגרסה 9 ואילך חייבים להשתמש ב-system-as-root, שמאחד את ramdisk.img עם system.img (שנקרא גם no-ramdisk), שבתורו מותקן כ-rootfs.
ניהול גרסאות של כותרת קובץ האימג' לאתחול
ב-Android מגרסה 9 ואילך, כותרת תמונת האתחול מכילה שדה לציון גרסת הכותרת. טוען האתחול חייב לבדוק את שדה הגרסה הזה ולנתח את הכותרת בהתאם.
DTBO בתהליך שחזור
כדי למנוע כשלים בעדכוני OTA בגלל חוסר התאמה בין תמונת השחזור לבין מחיצת DTBO במכשירים שאינם A/B, תמונת השחזור צריכה להכיל מידע מתמונת DTBO.
תצוגה
מגרעות במסך
החלקים החסרים במסך מאפשרים למפתחי אפליקציות ליצור חוויה עשירה מקצה לקצה, ועדיין להשאיר מקום לחיישנים חשובים בחלק הקדמי של המכשירים.
החלפת ההצעות
עדכונים להתנהגות של סיבוב המסך ב-Android 9 ואילך יש תמיכה באמצעי בקרה שפונים למשתמשים, כדי להצמיד את סיבוב המסך לרוחב או לאורך, גם אם המיקום של המכשיר משתנה.
מעברים מסונכרנים בין אפליקציות
מעברים מסונכרנים בין אפליקציות מאפשרים אנימציות חדשות של מעברים בין אפליקציות.
סיווג טקסט (לשעבר TEXTCLASSIFIER)
Android מגרסה 9 ואילך כולל שירות לסיווג טקסט, שהוא הדרך המומלצת להטמעה של סיווג טקסט, והטמעה של שירות ברירת מחדל.
צבעים עם טווח רחב
Android 9 ואילך כולל תמיכה במגוון רחב של צבעים, כולל:
- טווח דינמי גבוה (HDR)
- עיבוד תוכן במרחב הצבעים BT2020, אבל לא כמרחב נתונים של יעד סופי
כדי להשתמש בצבעים עם טווח רחב, כל רכיבי התצוגה של המכשיר (כמו המסך, רכיב החומרה, ה-GPU) צריכים לתמוך בצבעים עם טווח רחב או בפורמטים של מאגרים. מכשירים לא נדרשים להצהיר על תמיכה בתוכן עם טווח צבעים רחב, גם אם החומרה תומכת בכך. עם זאת, כדי לנצל את מלוא היתרונות של החומרה, צריך להפעיל את טווח הצבעים הרחב. כדי להימנע מחוסר עקביות בחוויה החזותית, לא מומלץ להשבית את הצבעים בטווח רחב במהלך זמן הריצה.
תאימות
מסמך הגדרת התאימות (CDD) של Android
מסמך ההגדרה של תאימות (CDD) ל-Android 9 מבוסס על גרסאות קודמות וכולל עדכונים לתכונות חדשות ושינויים בדרישות לפונקציונליות שפורסמה בעבר.
הגדרות
שיפור הווידג'טים של האפליקציות
מסגרת הווידג'טים של אפליקציות ל-Android מאפשרת לראות יותר אינטראקציות של משתמשים, במיוחד כשמשתמש מוחק או מוסיף ווידג'טים באופן ידני. הפונקציונליות הזו מגיעה כברירת מחדל עם Launcher3.
יצרנים צריכים לעדכן את אפליקציות מרכז הבקרה שלהם (שנשלחות עם המכשירים) כדי לתמוך בתכונה הזו, אם הן לא מבוססות על Launcher3. יצרני ציוד מקורי צריכים לתמוך בשדה widgetFeatures החדש במשגר ברירת המחדל שלהם.
הערה: התכונה פועלת מקצה לקצה רק אם מפעילים אותה כמו שצריך ב-Launchers. AOSP כולל הטמעה לדוגמה. אפשר לעיין ב-Change-Id Iccd6f965fa3d61992244a365efc242122292c0ca ב-AOSP כדי לראות את דוגמת הקוד שסופקה.
התראות על שינוי מצב המכשיר למתקיני חבילות
אפשר לשלוח שידור מוגן של המערכת לאפליקציות שיש להן את ההרשאה INSTALL_PACKAGES בכל פעם שיש שינוי במאפיינים כמו לוקאל או צפיפות תצוגה. אפשר לרשום מקלטים במניפסט, ותהליך מתעורר כדי לקבל את השידור. התכונה הזו שימושית למתקיני חבילות שרוצים להתקין רכיבים נוספים של אפליקציות בעקבות שינויים כאלה. זה לא נפוץ, כי שינויים בהגדרות שיכולים להפעיל את השידור הזה הם נדירים.
קוד המקור של ההתראה על שינוי סטטוס המכשיר נמצא במיקומים הבאים בקטע platform/frameworks/base:
api/system-current.txtcore/java/android/content/Intent.javacore/res/AndroidManifest.xmlservices/core/java/com/android/server/am/ActivityManagerService.java
ארכיטקטורת מידע
שינויים בארכיטקטורת המידע של אפליקציית ההגדרות מספקים יותר פונקציונליות ומקלים על ההטמעה.
בדיקות
Atest
כלי שורת הפקודה Atest מאפשר לבנות, להתקין ולהריץ בדיקות של Android באופן מקומי, וכך להריץ מחדש בדיקות במהירות רבה יותר בלי שצריך ידע באפשרויות של שורת הפקודה של Trade Federation test harness.
חבילה לבדיקות תאימות (CTS)
הורדות של CTS
חבילות של חבילה לבדיקות תאימות (CTS) שתומכות ב-Android 9 זמינות בדף CTS Downloads. אפשר לסנכרן את קוד המקור של הבדיקות הכלולות עם התג android-cts-9.0_r1 בעץ קוד פתוח.
אפשרויות CTS
ב-Android 9, נוספו ל-CTS v2 הפקודה והארגומנט הבאים:
-
run retryretries all tests that failed or weren't executed from the previous sessions. -
‘--shard-countמחלק את ההרצה של CTS למספר נתון של מקטעים עצמאיים, כדי להריץ אותה במקביל בכמה מכשירים.
בנוסף, הפקודה --retry-type שלא תועדה בעבר נוספה לאותו מסמך הפניה לפקודות של מסוף CTS v2.
שירות Secure Element (SE)
שירות הרכיב המאובטח בודק אם יש רכיבים מאובטחים שנתמכים על ידי הפלטפורמה הגלובלית. הוא מזהה אם במכשירים יש הטמעה של SE HAL, ואם כן, כמה. הוא משמש כבסיס לבדיקת ה-API וההטמעה של רכיב האבטחה הבסיסי.
תיבת שילוב חיישנים
תיבת שילוב החיישנים משמשת בערכת בדיקת תמונות המצלמה (Camera ITS) לבדיקת שילוב החיישנים ולבדיקת הסנכרון של כמה מצלמות. היא מספקת סביבת בדיקה עקבית למדידת הדיוק של חותמת הזמן של המצלמה ושל חיישנים אחרים בטלפונים עם Android. מידע נוסף זמין בדפים הבאים:
- במדריך למתחילים בנושא Sensor Fusion Box מפורטים השלבים להגדרת בדיקת Sensor Fusion Box בפעם הראשונה.
- Sensor Fusion Box Assembly מספק שלבים להרכבת תיבת שילוב חיישנים.
מערכת ITS-in-a-box עם שדה ראייה רחב
מערכת ITS-in-a-box עם שדה ראייה רחב היא מערכת אוטומטית שנועדה לבדוק מערכות מצלמה עם שדה ראייה רחב (WFoV) ועם שדה ראייה רגיל (RFoV) ב-Camera ITS.
חבילת בדיקות לספקים
ארכיטקטורת בקר המארח
ארכיטקטורת בקר המארח של Vendor Test Suite (VTS) היא הארכיטקטורה של מסגרת הבדיקה של VTS שמשולבת עם שירות הבדיקה שלה שמבוסס על ענן.
בדיקות HAL עם מודעות לשם השירות
בדיקות HAL עם מודעות לשם השירות של VTS תומכות בקבלת שם השירות של מופע HAL נתון על סמך המכשיר שבו פועלות בדיקות VTS.
בדיקת יכולת הבדיקה של HAL
בדיקת היכולת לבדוק את VTS HAL כוללת שיטה בזמן ריצה לשימוש בהגדרת המכשיר כדי לזהות אילו בדיקות VTS צריך לדלג עליהן עבור יעד המכשיר הזה.
תשתית לבדיקות אוטומטיות
תשתית הבדיקות האוטומטיות היא תשתית VTS לבדיקות אוטומטיות של VTS, CTS או בדיקות אחרות במכשירי שותפים שמופעלת בהם תמונת מערכת גנרית (GSI) של AOSP.
ניפוי באגים
טלמטריה מתקדמת
ב-Android, telemetry הוא תהליך של איסוף אוטומטי של מידע על השימוש במכשיר, במערכת Android ובאפליקציות, ושל ניתוח הביצועים שלהם. בגרסאות קודמות של Android, מחסנית הטלמטריה הייתה מוגבלת ולא תיעדה את המידע שנדרש כדי לזהות ולפתור בעיות באמינות המערכת ובמכשיר או באפליקציה. הדבר הקשה על זיהוי שורש הבעיות, ואף מנע אותו.
Android 9 כולל את statsd תכונת הטלמטריה, שפותרת את הבעיה הזו על ידי איסוף נתונים טובים יותר מהר יותר. statsd אוסף נתוני שימוש באפליקציות, נתונים סטטיסטיים של סוללה ותהליכים וקריסות. הנתונים מנותחים ומשמשים לשיפור המוצרים, החומרה והשירותים.
פרטים נוספים זמינים בקישור: frameworks/base/cmds/statsd/.
תכונות אבטחה
חתימה על אפליקציות
סכמת החתימה v3 APK תומכת בסיבוב מפתחות APK.
תמיכה בביומטריה
Android 9 כולל את המחלקה הציבורית
BiometricPrompt,
שבאמצעותה אפליקציות יכולות לשלב תמיכה באימות ביומטרי באופן שאינו תלוי במכשיר או בשיטה. מידע נוסף על שילוב של ערימת הנתונים הביומטריים כדי לכלול את BiometricPrompt זמין במאמר נתונים ביומטריים.
ניתוח דינמי
Android 9 כולל תמיכה בכלים נוספים לניתוח ולהפחתת סיכונים של ניצול לרעה.
בדיקת תקינות של זרימת הבקרה (CFI)
שלמות זרימת הבקרה (CFI) היא מנגנון אבטחה שאוסר על שינויים בגרף המקורי של זרימת הבקרה של קובץ בינארי שעבר קומפילציה, מה שמקשה מאוד על ביצוע מתקפות כאלה.
Kernel CFI
בנוסף ל-CFI של המערכת, שמופעל כברירת מחדל, Android מגרסה 9 ואילך כולל תמיכה ב-kernel control flow integrity (CFI).
הצפנה
הצפנה מבוססת-קבצים
הצפנה מבוססת-קובץ (FBE) עודכנה כדי לפעול עם אחסון שניתן להתאמה. במכשירים חדשים צריך להשתמש בהצפנה מבוססת-קובץ במקום בהצפנת דיסק מלאה.
הצפנת מטא-נתונים
Android מגרסה 9 ואילך כולל תמיכה בהצפנת מטא-נתונים במקרים שבהם יש תמיכה בחומרה. בהצפנת מטא-נתונים, מפתח יחיד שקיים בזמן האתחול משמש להצפנת תוכן לא מוצפן באמצעות הצפנה מבוססת-קבצים.
מאגר מפתחות
Android מגרסה 9 ואילך כולל את Keymaster 4, עם התכונות הבאות.
StrongBox
Android בגרסה 9 ואילך כולל תמיכה במפתחות של Android Keystore שמאוחסנים ומשמשים במעבד נפרד פיזית שנועד לאפליקציות עם אבטחה גבוהה, כמו רכיב אבטחה (SE) מוטמע. StrongBox Keymaster הוא יישום של Keymaster HAL בחומרה נפרדת ומאובטחת. ב-StrongBox יש:
- מעבד נפרד
- אחסון מאובטח מובנה
- מחולל מספרים אקראיים אמיתיים באיכות גבוהה
- אריזה עמידה בפני ניסיונות שינוי
- עמידות בפני התקפות ערוץ צדדי
ייבוא מאובטח של מפתחות
כדי לייבא מפתח באופן מאובטח אל Keymaster 4, מפתח שנוצר מחוץ למכשיר מוצפן עם הגדרת ההרשאות שמגדירות איך אפשר להשתמש במפתח.
תמיכה ב-3DES
Keymaster 4 כולל 3DES לצורך תאימות למערכות מדור קודם שמשתמשות ב-3DES.
קישור גרסה
כדי לתמוך במבנה המודולרי של Treble ולנתק את הקישור של system.img
אל boot.img, ב-Keymaster 4 בוצע שינוי במודל של קישור גרסת המפתח
כך שיהיו רמות תיקון נפרדות לכל מחיצה. כך כל מחיצה יכולה להתעדכן באופן עצמאי, ועדיין לספק הגנה מפני רולבק.
Android Protected Confirmation API
מכשירים נתמכים שמופעלים עם Android 9 מותקן מאפשרים למפתחים להשתמש ב-Android Protected Confirmation API.
באמצעות ה-API הזה, אפליקציות יכולות להשתמש במופע של ConfirmationPrompt כדי להציג למשתמש הנחיה לבחור הצהרה קצרה. ההצהרה הזו מאפשרת לאפליקציה לאשר מחדש שהמשתמש רוצה להשלים עסקה רגישה, כמו ביצוע תשלום.
SELinux
ארגז חול של SELinux לכל אפליקציה
ארגז החול של האפליקציה כולל אמצעי הגנה חדשים ומקרים לבדיקה כדי להבטיח שכל האפליקציות ללא הרשאות שמטרגטות ל-Android 9 ואילך יפעלו בארגזי חול נפרדים של SELinux.
שינויים ב-SELinux ב-Treble
עדכונים ל-Treble SELinux ב-Android מגרסה 9 ואילך מתועדים בכמה דפים בקטע בנושא SELinux.
Vendor init
Vendor init סוגר את הפער בהפרדה בין המערכת לספק ב-Treble, באמצעות דומיין SELinux נפרד להרצת פקודות /vendor עם הרשאות ספציפיות לספק.
מאפייני מערכת
ב-Android 9, מאפייני המערכת לא משותפים בין מחיצות system ו-vendor שלא לצורך, ויש שיטה לוודא שהמאפיינים המשותפים של המערכת עקביים.
בדיקות מאפיינים של SELinux
Android 9 כולל בדיקות חדשות בזמן בנייה שמוודאות שלכל הקבצים במיקומים ספציפיים יש מאפיינים מתאימים.
לדוגמה, כל הקבצים ב-sysfs כוללים את מאפיין החובה sysfs_type.
אודיו
אפקטים קוליים ברזולוציה גבוהה
העדכונים באפקטים של אודיו ברזולוציה גבוהה כוללים המרה של עיבוד האפקטים מפורמט int16 לפורמט float, ועלייה במספר של טראקים בו-זמניים של פלט לקוח, בזיכרון המקסימלי של הלקוח/השרת ובמספר הכולל של טראקים מעורבים.
מצלמה
מצלמות USB חיצוניות
ב-Android 9 ואילך יש תמיכה בשימוש במצלמות USB מסוג plug-and-play (כלומר, מצלמות אינטרנט) באמצעות Android Camera2 API הרגיל וממשק המצלמה HIDL.
מעקב תנועה
מכשירי מצלמה יכולים לפרסם את היכולת שלהם לעקוב אחרי תנועה.
תמיכה במספר מצלמות
תמיכה במספר מצלמות כוללת תמיכה ב-API למכשירים עם מספר מצלמות באמצעות מכשיר מצלמה לוגי חדש שמורכב משני מכשירי מצלמה פיזיים או יותר שמכוונים לאותו כיוון.
פרמטרים של סשן
הטמעה של פרמטרים של סשן יכולה לצמצם את העיכובים, כי היא מאפשרת ללקוחות של המצלמה להגדיר באופן פעיל קבוצת משנה של פרמטרים יקרים של בקשות כחלק משלב האתחול של סשן הצילום.
מאגר יחיד של נתונים שנוצר על ידי גורם אחד, עם כמה צרכנים
Single producer, multiple consumer camera buffer transport היא קבוצה של שיטות שמאפשרות ללקוחות של המצלמה להוסיף ולהסיר משטחי פלט באופן דינמי בזמן שסשן הצילום פעיל והזרמת המצלמה מתבצעת.
קישוריות
שיחות והודעות
הטמעה של חבילות גלישה
ב-Android 9 ואילך יש תמיכה משופרת בספקי סלולר שמטמיעים חבילות גלישה באמצעות ממשקי ה-API של SubscriptionPlan.
אפליקציות של צד שלישי לביצוע שיחות
ב-Android 9 ואילך יש ממשקי API שמאפשרים לאפליקציות שיחות של צד שלישי לטפל בשיחות נכנסות בו-זמנית של ספק הסלולר ולתעד את השיחות ביומן השיחות של המערכת.
ספק
זיהוי הספק
ב-Android 9, AOSP מוסיף מסד נתונים של מזהי ספקים כדי לעזור בזיהוי ספקים. מסד הנתונים מצמצם את הלוגיקה הכפולה ואת חוויית השימוש המפוצלת באפליקציה, כי הוא מספק דרך משותפת לזיהוי ספקי הסלולר.
eSIM
כרטיס SIM מוטמע (eSIM או eUICC) הוא הטכנולוגיה העדכנית ביותר שמאפשרת למשתמשים בנייד להוריד פרופיל של ספק ולהפעיל את השירות של הספק בלי כרטיס SIM פיזי. ב-Android מגרסה 9 ואילך, מסגרת Android מספקת ממשקי API סטנדרטיים לגישה ל-eSIM ולניהול פרופילי מינוי ב-eSIM. מידע נוסף זמין בכתובת:
תמיכה בכמה כרטיסי SIM בהגדרות IMS
ב-Android מגרסה 9 ואילך יש שיפורים בהגדרות המשתמש של מערכת משנה מבוססת-IP למולטימדיה (IMS). אתם יכולים להגדיר VoLTE, שיחות וידאו ושיחות Wi-Fi לכל מינוי בנפרד, במקום לשתף את ההגדרות האלה בין כל המינויים.
שידורים של מצב כרטיס ה-SIM
ב-Android מגרסה 9 ואילך, השימוש ב-Intent.ACTION_SIM_STATE_CHANGED הוצא משימוש, ונוספו שתי שידורים נפרדים למצב הכרטיס ולמצב האפליקציה של הכרטיס, TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED ו-TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED.
בעקבות השינויים האלה, מקלטים שצריכים לדעת רק אם יש כרטיס לא צריכים להאזין לשינויים במצב האפליקציה, ומקלטים שצריכים לדעת רק אם אפליקציות הכרטיסים מוכנות לא צריכים להאזין לשינויים במצב הכרטיס.
שתי ההודעות החדשות הן @SystemApis והן לא קבועות. רק נמענים עם הרשאת READ_PRIVILEGED_PHONE_STATE יכולים לקבל את השידורים.
הכוונה לא משודרת מחדש כשמבטלים את הנעילה של המכשיר. מקבלי שידורים שתלויים בשידורים שנשלחים לפני ביטול הנעילה צריכים להשתמש ב-directBootAware או לשלוח שאילתה לגבי המצב אחרי שמשתמש מבטל את הנעילה. אפשר לשלוח שאילתות לגבי המצבים באמצעות ממשקי ה-API המתאימים ב-TelephonyManager, getSimCardState()ו-getSimApplicationState().
Wi-Fi
Wi-Fi של ספק
התכונה carrier Wi-Fi מאפשרת למכשירים להתחבר אוטומטית לרשתות Wi-Fi שהספק הטמיע. באזורים עם עומס תנועה גבוה או עם כיסוי סלולרי מינימלי, כמו אצטדיון או תחנת רכבת תחתית, רשת Wi-Fi של ספק הסלולר עוזרת לשפר את הקישוריות ולהפחית את עומס התנועה.
רנדומיזציה של כתובות MAC
רנדומיזציה של כתובות MAC מאפשרת למכשירים להשתמש בכתובות MAC אקראיות כשהם מחפשים רשתות חדשות, בזמן שהם לא משויכים לרשת. ב-Android מגרסה 9 ואילך, אפשר להפעיל אפשרות למפתחים כדי לגרום למכשיר להשתמש בכתובת MAC אקראית כשהוא מתחבר לרשת Wi-Fi.
הפעל Wi‑Fi באופן אוטומטי
כשהתכונה הפעלה אוטומטית של Wi-Fi מופעלת, ה-Wi-Fi מופעל מחדש באופן אוטומטי בכל פעם שהמכשיר נמצא בקרבת רשת Wi-Fi שמורה עם אינדיקטור עוצמת אות מתקבל (RSSI) גבוה מספיק.
זמן הלוך ושוב ב-Wi-Fi
זמן הלוך ושוב (RTT) ב-Wi-Fi מאפשר למכשירים למדוד את המרחק למכשירים תומכים אחרים, בין אם הם נקודות גישה (AP) או עמיתים ב-Wi-Fi Aware (אם המכשיר תומך ב-Wi-Fi Aware). התכונה הזו מבוססת על פרוטוקול IEEE 802.11mc, ומאפשרת לאפליקציות להשתמש במיקום משופר ובזיהוי מיקום מדויק יותר.
שיפורים בניקוד של Wi-Fi
מודלים משופרים של ניקוד Wi-Fi קובעים במהירות ובדייקנות מתי מכשיר צריך לצאת מרשת Wi-Fi מחוברת או להיכנס לרשת Wi-Fi חדשה. המודלים האלה מספקים למשתמשים חוויה אמינה וחלקה, כי הם מונעים פערים בקישוריות.
בודקים את ערכי RSSI במקורות המידע של config.xml, במיוחד את המקורות הבאים:
config_wifi_framework_wifi_score_bad_rssi_threshold_5GHzconfig_wifi_framework_wifi_score_entry_rssi_threshold_5GHzconfig_wifi_framework_wifi_score_bad_rssi_threshold_24GHzconfig_wifi_framework_wifi_score_entry_rssi_threshold_24GHz
בו-זמניות של Wi-Fi STA/AP
בו-זמניות של Wi-Fi STA/AP היא היכולת של מכשירים לפעול במצב תחנה (STA) ובמצב נקודת גישה (AP) בו-זמנית. במכשירים שתומכים ב-Wi-Fi עם Dual Band Simultaneous (DBS), התכונה הזו מאפשרת יכולות חדשות, כמו להפעיל נקודה לשיתוף אינטרנט (Hotspot) בלי להפריע ל-Wi-Fi של STA (softAP).
שיפורים ב-WiFiStateMachine
WifiStateMachine היא המחלקה הראשית שמשמשת לשליטה בפעילות ה-Wi-Fi, לתיאום קלט המשתמש (מצבי הפעלה: נקודה לשיתוף אינטרנט, סריקה, חיבור או כיבוי) ולשליטה בפעולות של רשת Wi-Fi (כמו סריקה או חיבור).
ב-Android 9 ומעלה, הארכיטקטורה של קוד המסגרת של Wi-Fi וההטמעה של WifiStateMachine עוצבו מחדש, מה שמוביל לצמצום גודל הקוד, ללוגיקה של שליטה ב-Wi-Fi שקל יותר לעקוב אחריה, לשיפור הפירוט של השליטה ולכיסוי ואיכות טובים יותר של בדיקות יחידה.
באופן כללי,WifiStateMachine מאפשרת ל-Wi-Fi להיות באחד מארבעה מצבים:
- מצב לקוח (אפשר להתחבר ולסרוק)
- מצב סריקה בלבד
- מצב SoftAP (נקודת Wi-Fi לשיתוף אינטרנט)
- מושבת (ה-Wi-Fi כבוי לגמרי)
לכל מצב Wi-Fi יש דרישות שונות להפעלת שירותים, וצריך להגדיר אותו באופן עקבי כך שיטפל רק באירועים שרלוונטיים לפעולה שלו. ההטמעה החדשה מגבילה את הקוד לאירועים שקשורים למצב הזה, וכך מקצרת את זמן הניפוי ומפחיתה את הסיכון להוספת באגים חדשים בגלל מורכבות. בנוסף לטיפול מפורש בפונקציונליות של המצב, ניהול השרשורים מתבצע באופן עקבי והשימוש בערוצים אסינכרוניים מבוטל כמנגנון לסנכרון.
עדכונים בהרשאות ה-Wi-Fi
ב-Android מגרסה 9 ואילך, הרשאת האפליקציה CHANGE_WIFI_STATE מופעלת כברירת מחדל. אפשר להשבית את ההרשאה לכל אפליקציה בדף ההגדרות בהגדרות > אפליקציות והתראות > גישה מיוחדת לאפליקציה > שליטה ב-Wi-Fi.
האפליקציות צריכות להיות מסוגלות לטפל במקרים שבהם לא ניתנה הרשאת CHANGE_WIFI_STATE.
כדי לאמת את ההתנהגות הזו, מריצים את הבדיקות roboelectric והבדיקות הידניות.
לבדיקה ידנית:
- עוברים אל הגדרות > אפליקציות והתראות > הרשאת גישה מיוחדת לאפליקציות > שליטה ב-Wi-Fi.
- בוחרים את ההרשאה של האפליקציה ומשביתים אותה.
- מוודאים שהאפליקציה יכולה להתמודד עם התרחיש שבו לא ניתנת הרשאת
CHANGE_WIFI_STATE.
הוצאה משימוש של WPS
בגלל בעיות אבטחה, ההגדרה המוגנת של Wi-Fi (WPS) ב-WiFiManager הוצאה משימוש והיא מושבתת ב-Android מגרסה 9 ואילך. עם זאת, WiFiDirect עדיין משתמש ב-WPS ב-WPA supplicant.
גרפיקה
הטמעה
Vulkan 1.1 API
ב-Android 9 ואילך יש תמיכה בהטמעה של ממשק Vulkan 1.1 graphics API.
הכלי WinScope למעקב אחר מעברים בין חלונות
Android מגרסה 9 ואילך כולל את הכלי WinScope למעקב אחרי מעברים בין חלונות. WinScope מספק תשתית וכלים לתיעוד ולניתוח של מצב מנהל החלונות במהלך מעברים ואחריהם. הוא מאפשר להקליט ולעבור בין חלונות, תוך כדי הקלטת כל מצב רלוונטי של מנהל החלונות בקובץ מעקב. אפשר להשתמש בנתונים האלה כדי להפעיל מחדש את המעבר ולעבור שלב אחר שלב.
קוד המקור של כלי WinScope נמצא בכתובת platform/development/tools/winscope.
אינטראקציה
אודיו לרכב
במאמר Automotive Audio מוסבר על ארכיטקטורת האודיו בהטמעות של Android שקשורות לרכב.
שכבת ההפשטה של רשתות עצביות (NN) HAL מגדירה הפשטה של המאיצים השונים. מנהלי ההתקנים של המאיצים האלה צריכים להיות תואמים ל-HAL הזה.
ממשק vehicle HAL
במאמר סקירה כללית של VHAL מפורטים השינויים בממשק HAL של הרכב.
בחירת לוויין GNSS
כשעובדים עם GNSS HALs (v1.1 ואילך) חדשים, מערכת Android Framework עוקבת אחרי הגדרות Android. השותפים יכולים לשנות את ההגדרות דרך Google Play Services או עדכוני מערכת אחרים. ההגדרות האלה מציינות ל-GNSS HAL אם אין להשתמש בלווייני GNSS מסוימים. האפשרות הזו יכולה להיות שימושית במקרה של שגיאות מתמשכות בלוויין GNSS או בקבוצת לוויינים, או כדי להגיב מהר יותר לבעיות בהטמעה של GNSS HAL שעלולות להתרחש כשמשלבים קבוצות לוויינים באמצעות מערכות זמן שונות ואירועים חיצוניים, כמו מעבר לשנייה מעוברת, מעבר יום או מעבר שבוע.
דגם החומרה של GNSS
ב-Android 9, גרסה 1.1 ואילך של GNSS HAL יכולה להעביר מידע על ה-API של החומרה לפלטפורמה. הפלטפורמה צריכה להטמיע את הממשק IGnssCallback ולהעביר את ה-handle ל-HAL. שכבת ה-HAL של GNSS מעבירה את פרטי דגם החומרה באמצעות השיטה LocationManager#getGnssHardwareModelName(). יצרני מכשירים צריכים לעבוד עם ספקי GNSS HAL שלהם כדי לספק את המידע הזה, אם אפשר.
הרשאות
הגדרת עדכונים של בקרת גישה לפי שיקול דעת
הגדרת בקרת גישה לפי שיקול דעת (DAC) כוללת עדכונים למנגנון של מזהי Android (AID) להרחבת היכולות של מערכת הקבצים.
הוספת הרשאות של אפליקציות עם הרשאות מיוחדות לרשימת ההיתרים
ב-Android 9 ואילך, אם יש הרשאות שצריך לדחות, צריך לערוך את ה-XML כדי להשתמש בתג deny-permission במקום בתג permission שבו השתמשו בגרסאות קודמות.
נתונים
שיפורים בהערכת רוחב הפס
Android 9 מספק תמיכה משופרת בהערכת רוחב פס. אפליקציות ל-Android יכולות להגדיר רזולוציה מתאימה יותר לשיחות וידאו ולסטרימינג של וידאו אם יש להן גישה לרוחב הפס של הנתונים שזמין.
במכשירים שפועלת בהם מערכת Android מגרסה 6.0 ואילך, מתקשר שרוצה לקבל הערכה של רוחב הפס ברשת סלולרית מתקשר אל ConnectivityManager.requestBandwidthUpdate(), ומסגרת העבודה עשויה לספק הערכה של רוחב הפס להורדה.
אבל במכשירים עם Android בגרסה 9 ומעלה, הקריאה החוזרת (callback) של onCapabilitiesChanged() מופעלת באופן אוטומטי כשמתרחש שינוי משמעותי ברוחב הפס המשוער, והקריאה של requestBandwidthUpdate() היא פעולה ללא השפעה (no-op). המשתנים המשויכים getLinkDownstreamBandwidthKbps() ו-getLinkUpstreamBandwidthKbps() מאוכלסים במידע מעודכן שמסופק על ידי השכבה הפיזית.
בנוסף, מכשירים יכולים לבדוק את רוחבי הפס של תאי LTE באמצעות ServiceState.getCellBandwidths().
כך האפליקציות יכולות לקבוע כמה רוחב פס (תדר) זמין בתא נתון. מידע על רוחב הפס של התא זמין דרך תפריט מוסתר, כדי שבודקים בשטח יוכלו לבדוק את המידע העדכני ביותר.
מעקב אחרי תנועה ב-eBPF
הכלי eBPF למעקב אחרי תעבורת נתונים ברשת משתמש בשילוב של הטמעה במרחב הליבה ובמרחב המשתמש כדי לעקוב אחרי השימוש ברשת במכשיר מאז ההפעלה האחרונה של המכשיר. הכלי הזה מספק פונקציות נוספות כמו תיוג שקעים, הפרדה בין תעבורה בחזית וברקע וחומת אש לכל UID כדי לחסום אפליקציות מגישה לרשת בהתאם למצב המכשיר.
שחזור לגרסאות קודמות של ממשקי API
עכשיו אפשר לשחזר מכשירים מגרסאות עתידיות של מערכת ההפעלה. האפשרות הזו שימושית במיוחד אם המשתמשים שדרגו את הטלפונים שלהם ואז איבדו או שברו אותם.
אם יצרן ציוד מקורי משנה את סוכני הגיבוי של אחד מחבילות המערכת (android, system, settings), הסוכנים האלה צריכים לטפל בשחזור של קבוצות גיבוי שנוצרו בגרסאות חדשות יותר של הפלטפורמה בלי לקרוס, ולשחזר לפחות חלק מהנתונים.
מומלץ להשתמש בכלי אימות כדי לבדוק אם יש ערכים לא תקינים בחלק מסוים של נתוני הגיבוי, ולשחזר רק נתונים תקינים, כמו בדוגמה core/java/android/provider/SettingsValidators.java.
התכונה מופעלת כברירת מחדל. אפשר להשבית את התמיכה של SettingsBackupAgent בשחזור מגרסאות עתידיות באמצעות Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION. לא נדרשת הטמעה נוספת, אלא אם יצרן המכשיר מרחיב את אחד מסוכני הגיבוי שכלולים ב-ROM (או מוסיף סוכן בהתאמה אישית).
התכונה הזו מאפשרת שחזורי מערכת מגרסאות עתידיות של הפלטפורמה; עם זאת, סביר להניח שהנתונים המשוחזרים לא יהיו מלאים. ההוראות הבאות רלוונטיות לסוכני הגיבוי הבאים:
PackageManagerBackupAgent תומך בגרסאות עתידיות של נתוני הגיבוי באמצעות ניהול גרסאות של הפורמט. התוספים כאן חייבים להיות תואמים לקוד השחזור הנוכחי או לפעול לפי ההוראות במחלקה, שכוללות הגדלה של הקבועים המתאימים.
SystemBackupAgent מציין
restoreAnyVersion = falseב-Android 9 ובגרסאות מתקדמות יותר. הוא לא תומך בשחזור מגרסאות חדשות יותר של ה-API.SettingsBackupAgent מציין
restoreAnyVersion = trueב-Android 9 ובגרסאות מתקדמות יותר. קיימת תמיכה חלקית באמצעות כלי תיקוף. אפשר לשחזר הגדרה מגרסת API גבוהה יותר אם יש מאמת בשביל ההגדרה במערכת ההפעלה של היעד. כל הגדרה שמוסיפים צריכה להיות מלווה בכלי התיקוף שלה. פרטים נוספים זמינים בכיתה.כל סוכן גיבוי בהתאמה אישית שכלול ב-ROM צריך להגדיל את קוד הגרסה שלו בכל פעם שמתבצע שינוי לא תואם בפורמט של נתוני הגיבוי, ולוודא ש-
restoreAnyVersion = false(ברירת המחדל) מוגדר אם הסוכן לא מוכן לטפל בנתוני גיבוי מגרסה עתידית של הקוד שלו.
Enterprise
שיפורים בפרופילים מנוהלים
שינויים בממשק המשתמש של פרופילים מנוהלים מקלים על המשתמשים לזהות את הפרופיל המנוהל, לגשת אליו ולשלוט בו.
השהיית עדכונים דרך האוויר (OTA)
ממשק ה-API החדש @SystemApi מאפשר לבעלי המכשירים להשהות עדכוני OTA ללא הגבלת זמן, כולל עדכוני אבטחה.
ביצועים
Health 2.0
Android מגרסה 9 ואילך כולל את android.hardware.health HAL 2.0, שדרוג משמעותי של הגרסה מ-health@1.0 HAL. מידע נוסף זמין בדפים הבאים:
פתרון לשמירת APK במטמון
גרסה Android 9 ואילך כוללת פתרון של שמירת APK במטמון להתקנה מהירה של אפליקציות שנטענו מראש במכשיר שתומך במחיצות A/B. יצרני ציוד מקורי יכולים להציב טעינות מראש ואפליקציות פופולריות במטמון ה-APK שמאוחסן ברוב המקרים במחיצה הריקה B במכשירים חדשים עם מחיצות A/B, בלי להשפיע על שטח הנתונים שגלוי למשתמשים.
אופטימיזציה מבוססת-פרופיל
Android מגרסה 9 ואילך תומך בשימוש באופטימיזציה מבוססת-פרופיל (PGO) של Clang במודולים מקוריים של Android שיש להם כללי בנייה של blueprint.
רישום ביומן כתיבה מראש
מצב מיוחד של SQLiteDatabase שנקרא compatibility write-ahead logging (WAL) מאפשר למסד נתונים להשתמש ב-journal_mode=WAL ולהמשיך לשמור על חיבור אחד לכל היותר לכל מסד נתונים.
זמני הפעלה
ב-Android 9 יש שינויים באופטימיזציה של זמן האתחול, כמו שמתואר במאמר אופטימיזציה של זמני אתחול.
הספק
הגבלות על פעילות ברקע
Android 9 ואילך כולל הגבלות על פעילות ברקע שמאפשרות למשתמשים להגביל אפליקציות שעלולות לרוקן את הסוללה. המערכת עשויה גם להציע להשבית אפליקציות שמשפיעות לרעה על תקינות המכשיר.
מכשירים ללא סוללה
Android 9 מטפל במכשירים ללא סוללה בצורה אלגנטית יותר מאשר בגרסאות קודמות. ב-Android 9 הוסר קוד למכשירים ללא סוללה, שהניחו כברירת מחדל שהסוללה קיימת, טעונה ב-100% ובמצב טוב עם קריאת טמפרטורה תקינה בנגד התרמי שלה.