נתוני הגרסה של Android 9

בדף הזה מופיע סיכום של התכונות העיקריות בגרסה Android 9, וקישורים למידע נוסף. סיכומי התכונות האלה מסודרים לפי המיקום של התיעוד של התכונה באתר הזה. במאמר עדכוני האתר מאוגוסט 2018 יש מדריך להעברה ולשינוי שם של קטעים.

תכנות

תמונת מערכת גנרית (GSI)

תמונת מערכת גנרית (GSI) היא תמונת מערכת עם הגדרות מותאמות למכשירי Android. תמונת מערכת כללית (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 ואילך, טוען האתחול צריך להעביר את ה-blob של עץ המכשיר המאוחד לליבה לפני שינוי המאפיינים שמוגדרים בשכבות-על של עץ המכשיר (DTO).

ניהול גרסאות של כותרות תמונות DTBO

‫Android מגרסה 9 ואילך כולל שדה גרסה בכותרת של תמונת ה-DTBO.

אימות DTBO

ב-Android מגרסה 9 ואילך נדרשת מחיצת DTBO. כדי להוסיף צמתים או לבצע שינויים במאפיינים ב-SoC DT, טוען האתחול צריך להוסיף באופן דינמי שכבת-על של DT ספציפי למכשיר על SoC DT. מידע נוסף זמין במאמר קומפילציה ואימות.

תאימות של ליבה

‫Android 9 ואילך כולל דרישות שמשפיעות על הליבה, על הממשקים שלה ועל השימוש ב-DTBO. מידע נוסף זמין בדפים הבאים:

‫Vendor NDK

שינויים בעיצוב

מידע על שינויים בעיצוב של VNDK ב-Android מגרסה 9 ואילך זמין בדפים הבאים:

בודק ABI

בדף ABI Stability (יציבות ABI) מתואר הכלי לבדיקת ממשק בינארי של אפליקציה (ABI), שמוודא שהשינויים שבוצעו בספריות VNDK תואמים ל-ABI.

קובצי snapshot של VNDK

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

אובייקט ממשק של ספק (אובייקט VINTF)

בדפים הבאים בקטע Vendor Interface Object מתוארים עדכונים ב-Android מגרסה 9 ואילך:

לוח זמנים להוצאה משימוש של HIDL

בדפים הבאים מוסבר איך מערכת Android מוציאה משימוש ומסירה את HIDL HALs:

תוכנת אתחול

מחיצות מוצרים

‫Android מגרסה 9 ואילך תומך בבנייה של מחיצות /product באמצעות מערכת הבנייה של 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 החדש במפעיל ברירת המחדל שלהם.

הערה: התכונה פועלת מקצה לקצה רק אם מפעילים אותה כמו שצריך. ‫AOSP כולל הטמעה לדוגמה. אפשר לעיין ב-Change-Id Iccd6f965fa3d61992244a365efc242122292c0ca ב-AOSP כדי לראות את קוד הדוגמה שסופק.

התראות על שינוי מצב המכשיר למתקיני חבילות

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

קוד המקור של ההתראה על שינוי סטטוס המכשיר נמצא במיקומים הבאים ב-platform/frameworks/base:

  • api/system-current.txt
  • core/java/android/content/Intent.java
  • core/res/AndroidManifest.xml
  • services/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 retry מנסה שוב את כל הבדיקות שנכשלו או שלא בוצעו בהפעלות הקודמות.
  • ‘--shard-count shards a CTS run into given number of independent chunks, to run on multiple devices in parallel.

בנוסף, הפקודה --retry-type שלא תועדה בעבר נוספה לאותו מסמך הפניה לפקודות של מסוף CTS v2.

שירות Secure Element (SE)

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

תיבת שילוב חיישנים

תיבת שילוב החיישנים משמשת בערכת בדיקות התמונות של המצלמה (Camera ITS) לבדיקת שילוב החיישנים ולבדיקת הסנכרון של כמה מצלמות, ומספקת סביבת בדיקה עקבית למדידת הדיוק של חותמת הזמן של המצלמה ושל חיישנים אחרים בטלפונים עם Android. מידע נוסף זמין בדפים הבאים:

מערכת 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 שמאוחסנים ומשמשים ב-CPU נפרד פיזית שנועד לאפליקציות עם אבטחה גבוהה, כמו רכיב מאובטח (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 מסוג הכנס והפעל (כלומר, מצלמות אינטרנט) באמצעות Android Camera2 API הרגיל וממשק המצלמה HIDL.

מעקב תנועה

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

תמיכה במספר מצלמות

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

פרמטרים של סשן

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

מאגר נתונים זמני עם יצרן אחד וכמה צרכנים

Single producer, multiple consumer camera buffer transport היא קבוצה של שיטות שמאפשרות ללקוחות של המצלמה להוסיף ולהסיר משטחי פלט באופן דינמי בזמן שסשן הצילום פעיל והזרמת המצלמה מתבצעת.

קישוריות

שיחות והודעות

הטמעה של חבילות גלישה

ב-Android 9 ואילך יש תמיכה משופרת בספקי סלולר שמטמיעים חבילות גלישה באמצעות SubscriptionPlan APIs.

אפליקציות של צד שלישי לביצוע שיחות

ב-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 של ספק

התכונה 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_5GHz
  • config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz
  • config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz
  • config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz

הפעלה בו-זמנית של Wi-Fi STA/AP

הפעלה בו-זמנית של Wi-Fi STA/AP היא היכולת של מכשירים לפעול במצבי תחנה (STA) ונקודת גישה (AP) בו-זמנית. במכשירים שתומכים ב-Wi-Fi בו-זמני בשני תדרים (DBS), האפשרות הזו מאפשרת למשל להפעיל נקודה לשיתוף אינטרנט (SoftAP) בלי לשבש את ה-Wi-Fi של תחנת הבסיס (STA).

שיפורים ב-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 והבדיקות הידניות.

לבדיקה ידנית:

  1. עוברים אל הגדרות > אפליקציות והתראות > הרשאת גישה מיוחדת לאפליקציות > שליטה ב-Wi-Fi.
  2. בוחרים את ההרשאה של האפליקציה ומשביתים אותה.
  3. מוודאים שהאפליקציה יכולה להתמודד עם התרחיש שבו ההרשאה 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

בקטע מאפייני הרכב מפורטים שינויים בממשק HAL של הרכב.

בחירת לוויין GNSS

כשעובדים עם HALs חדשים של מערכות לוויין גלובליות לניווט (GNSS) (גרסה 1.1 ואילך), ה-Framework של Android עוקב אחרי הגדרות Android. השותפים יכולים לשנות את ההגדרות דרך Google Play Services או עדכוני מערכת אחרים. ההגדרות האלה מציינות ל-GNSS HAL אם אין להשתמש בלווייני GNSS מסוימים. האפשרות הזו יכולה להיות שימושית במקרה של שגיאות מתמשכות בלוויין GNSS או בקבוצת לוויינים, או כדי להגיב מהר יותר לבעיות בהטמעה של GNSS HAL שעלולות להתרחש כשמשלבים קבוצות לוויינים באמצעות מערכות זמן שונות ואירועים חיצוניים, כמו מעבר לשנייה מעוברת, ליום או למספר שבוע חדש.

דגם החומרה של GNSS

ב-Android 9, גרסה 1.1 ומעלה של GNSS HAL יכולה להעביר מידע על ה-API של החומרה לפלטפורמה. הפלטפורמה צריכה להטמיע את הממשק IGnssCallback ולהעביר את ה-handle ל-HAL. ה-GNSS HAL מעביר את פרטי דגם החומרה באמצעות השיטה LocationManager#getGnssHardwareModelName(). יצרני מכשירים צריכים לעבוד עם ספקי GNSS HAL שלהם כדי לספק את המידע הזה, אם אפשר.

הרשאות

הגדרת עדכונים של בקרת גישה לפי שיקול דעת

במאמר הגדרת בקרת גישה לפי שיקול דעת (DAC) יש עדכונים לגבי מנגנון מזהי Android (AID) להרחבת היכולות של מערכת הקבצים.

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

ב-Android 9 ובגרסאות מתקדמות יותר, אם יש הרשאות שצריך לדחות, צריך לערוך את ה-XML כדי להשתמש בתג deny-permission במקום בתג permission שבו השתמשו בגרסאות קודמות.

נתונים

שיפורים בהערכת רוחב הפס

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

במכשירים שבהם פועלת מערכת Android מגרסה 6.0 ואילך, מתקשר שרוצה לקבל הערכה של רוחב הפס ברשת סלולרית מתקשר אל ConnectivityManager.requestBandwidthUpdate(), ומסגרת העבודה עשויה לספק הערכה של רוחב הפס להורדה.

אבל במכשירים עם Android בגרסה 9 ומעלה, הקריאה החוזרת onCapabilitiesChanged() מופעלת באופן אוטומטי כשמתרחש שינוי משמעותי ברוחב הפס המשוער, והקריאה ל-requestBandwidthUpdate() היא פעולה שלא עושה כלום. המידע שקשור ל-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

בעזרת @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% ובמצב טוב, עם קריאת טמפרטורה תקינה בנגד התרמי שלה.