מודול ExtServices מעדכן רכיבי framework עבור פונקציונליות ליבה של מערכת ההפעלה, כמו דירוג התראות, אסטרטגיות להתאמת טקסט למילוי אוטומטי, מטמון אחסון, מנגנון watchdog של חבילות ושירותים אחרים שפועלים באופן רציף. המודול הזה ניתן לעדכון, כלומר הוא יכול לקבל עדכונים לפונקציונליות שלו מחוץ למחזור הגרסאות הרגיל של Android.
רכיבי שירות
המודול ExtServices מכיל את השירותים הבאים.
DisplayHashingServiceהחל מ-Android 12
TextClassifierServiceהחל מ-Android 11InlineSuggestionsRenderServiceהחל מ-Android 11AutofillFieldClassificationServiceהחל מ-Android 10NotificationAssistantServiceהחל מ-Android 10ResolverRankerServiceהחל מ-Android 10CacheQuotaServiceהחל מ-Android 10
DisplayHashingService
ב-Android 12, DisplayHashingService משמש ליצירת מופע של DisplayHash עבור המאגר שצוין. הוא משמש גם כדי לוודא שהמערכת יצרה גיבוב (hash) ספציפי של תצוגה. כשיוצרים גיבוב של תצוגה, המתקשר יכול לציין באיזה מאלגוריתמי הגיבוב הנתמכים הוא רוצה להשתמש.
TextClassifierService
רכיב השירות TextClassifierService תומך בממשקי TextClassifierAPI ובתכונות של Android כמו בחירת טקסט חכמה והצעות חכמות בהתראות. מודול ExtServices מכיל את מסווג הטקסט שמוגדר כברירת מחדל, שאומת על ידי בדיקת CTS TextClassifierPolicyTest.java.
במקרה הצורך, אפשר להגדיר שירות מותאם אישית לסיווג טקסט על ידי ציון config_defaultTextClassifierPackage ב-config.xml.
סיווגים מותאמים אישית של טקסט יכולים להיות תלויים בסיווג ברירת המחדל של טקסט על ידי קריאה ל-TextClassifierService.getDefaultTextClassifierImplementation(Context) כדי לקבל מופע שלו.
InlineSuggestionRenderService
רכיב השירות InlineSuggestionRenderService מאפשר להציג הצעות מוטבעות בסרגל ההצעות במקלדת. השירות הזה מופעל כדי לעבד אובייקט View שמכיל את ההצעה המשובצת לזרימת המילוי האוטומטי החדשה.
ההטמעה שמוגדרת כברירת מחדל בשירות הזה של רכיב ה-Renderer קוראת ל-androidx.autofill.inline.Renderer כדי לעבד את ההצעה. ההתנהגות הזו מאומתת על ידי בדיקות CTS ב-/autofillservice/cts/inline/.
שם חבילה
במכשירים עם Android 11, צריך להגדיר את config_servicesExtensionPackage (ב-frameworks/base/core/res/res/values/config.xml) לשם החבילה ExtServices (com.android.ext.services). השינוי הזה בהגדרה מאומת על ידי בדיקת ה-CTS cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java.
גבולות המודול
ב-Android 12, קוד המודול ExtServices מועבר מ-frameworks/base/apex/extservices (זוהי תת-ספרייה של frameworks/base project) ומ-packages/modules/ExtServices.
מבנה הפרויקט החדש של packages/modules/ExtServices הוא כזה:
apex/(קבצים מ-frameworks/base/apex/extservices)-
java/(קבצים מ-packages/modules/ExtServices/res,packages/modules/ExtServices/src, packages/modules/ExtServices/tests, וקבצים לתכונה חדשה) jni/(קבצים לתכונה חדשה)native/(קבצים לתכונה חדשה)
הגבול של מודול ExtServices הוא packages/modules/ExtServices. ב-Android 11, כמה מחלקות הטמעה TextClassifier הועברו מ-frameworks/base/core/.
פורמט המודול
ב-Android 11, מודול ExtServices (com.android.ext.services) הוא בפורמט APEX. ב-Android 10, המודול הזה הוא בפורמט APK.
התאמה אישית
ב-Android 11, אפשר להגדיר שירות מותאם אישית לסיווג טקסט שקורא לסיווג הטקסט שמוגדר כברירת מחדל (אבל לא מומלץ לעשות את זה). ב-Android 10, מודול ExtServices לא מספק אפשרויות להתאמה אישית.
בדיקה
חבילת בדיקות התאימות של Android (CTS) מאמתת את הפונקציונליות של המודול ExtServices על ידי הרצת קבוצה מקיפה של בדיקות CTS בכל מהדורה של המודול. בנוסף, חבילת הבדיקות הראשית (MTS) מכילה גם כמה בדיקות של ExtServices. הרשימה המלאה של בדיקות ExtServices:
שינויים בהגדרות. אומת על ידי בדיקת CTS
cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java.TextClassifierconfig. אומת באמצעות בדיקת CTScts/TextClassifierPolicyTest.java.הצעה למילוי אוטומטי בתוך השורה. אומת על ידי בדיקות CTS ב-
cts/inline/.