The ExtServices module updates framework components for core OS functionality, such as notification ranking, autofill text-matching strategies, storage cache, package watchdog, and other services that run continually. This module is updatable, meaning it can receive updates to functionality outside of the normal Android release cycle.
Service components
The ExtServices module contains the following services.
DisplayHashingServicestarting in Android 12TextClassifierServicestarting in Android 11InlineSuggestionsRenderServicestarting in Android 11AutofillFieldClassificationServicestarting in Android 10NotificationAssistantServicestarting in Android 10ResolverRankerServicestarting in Android 10CacheQuotaServicestarting in Android 10
DisplayHashingService
In Android 12, DisplayHashingService is used to
generate an instance of DisplayHash for the specified buffer. It's also used
to verify that a specific display hash was generated by the system. When
generating a display hash, the caller can specify which of the supported
hashing algorithms it wishes to use.
TextClassifierService
The
TextClassifierService
service component backs TextClassifier
APIs
and Android features such as smart text selection and smart suggestions in
notifications. The ExtServices module contains the default text classifier,
which is verified by the CTS test
TextClassifierPolicyTest.java.
If needed, you can configure a custom text classifier service by specifying
config_defaultTextClassifierPackage in
config.xml.
Custom text classifiers can depend on the default text classifier by calling
TextClassifierService.getDefaultTextClassifierImplementation(Context)
to get an instance of it.
InlineSuggestionRenderService
The InlineSuggestionRenderService service component enables Inline Suggestions
to be shown in the keyboard suggestion strip. This service is called to render a
View object holding the Inline Suggestion for the new Inline Autofill flow.
The default implementation for this renderer service calls into
androidx.autofill.inline.Renderer
to render the suggestion. This behavior is verified by CTS tests in
/autofillservice/cts/inline/.
Package name
Devices running Android 11 must set
config_servicesExtensionPackage (in
frameworks/base/core/res/res/values/config.xml) to the ExtServices package
name (com.android.ext.services). This configuration change is verified by the
CTS test
cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java.
Module boundary
In Android 12, the ExtServices
module code is moved from frameworks/base/apex/extservices
(this is a subdirectory of the frameworks/base project)
and
packages/modules/ExtServices.
The new project structure for packages/modules/ExtServices is as follows:
apex/(files fromframeworks/base/apex/extservices)java/(files frompackages/modules/ExtServices/res,packages/modules/ExtServices/src,packages/modules/ExtServices/tests, and files for new feature)jni/(files for new feature)native/(files for new feature)
The ExtServices module boundary is in packages/modules/ExtServices. Android
11 also moves several TextClassifier implementation
classes out of frameworks/base/core/.
Module format
In Android 11, the ExtServices module
(com.android.ext.services) is in APEX
format. In Android 10, this module is in APK format.
Customization
In Android 11, you can configure a custom text classifier service that calls the default text classifier (however, this isn't recommended). In Android 10, the ExtServices module doesn't provide customization options.
Testing
The Android Compatibility Test Suite (CTS) verifies ExtServices module functionality by running a comprehensive set of CTS tests on every module release. In addition, the Mainline Test Suite (MTS) also contains several ExtServices tests. The full list of ExtServices tests is as follows:
Config changes. Verified by the CTS test
cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java.TextClassifierconfig. Verified by CTS testcts/TextClassifierPolicyTest.java.Autofill inline suggestion. Verified by CTS tests in
cts/inline/.