Modular System Components

Android 10 modularizes some Android system components and enables them to be updated outside of the normal Android release cycle. End-user devices can receive updates to these modularized system components from the Google Play Store infrastructure or through a partner-provided over-the-air (OTA) mechanism.

About modular system components

Modular system components enable Google and Android partners to distribute updates broadly, quickly, and seamlessly to end-user devices in a nonintrusive manner. For example, the combination of media codec fragmentation and critical bugs can dramatically slow app adoption and user engagement. Frequent updates to media-related modules can reduce codec fragmentation to make media app behavior more consistent across different Android devices and fix critical bugs to build user trust.

Architecture

Android 10 converts selected system components into modules, some of which use the APEX container format (introduced in Android 10) and some of which use the APK format. The modular architecture enables system components to be updated with critical bug fixes and other improvements as needed, without affecting lower-level vendor implementations or higher-level apps and services.

Figure 1. Modularized system components

Module updates don't introduce new APIs. They use only the SDK and System APIs guaranteed by the Compatibility Test Suite (CTS), communicate only with each other, and use only stable C API or stable AIDL interfaces.

Updated modular system components can be packaged together and pushed to end-user devices, either by Google (using the Google Play Store infrastructure) or by the Android partner (using a partner-provided OTA mechanism). The module package installs (and rolls back) atomically, meaning all modules that need to be updated are updated or none are. For example, if a module that needs to be updated can't be updated for any reason, the device doesn't install any of the modules in the package.

Available modules

Android 10 includes the following modules.

Module name Package name Type

Runtime

com.android.runtime.release.apex

APEX

Captive Portal Login

com.android.captiveportallogin

APK

Conscrypt

com.android.conscrypt

APEX

DNS Resolver

com.android.resolv

APEX

DocumentsUI

com.android.documentsui

APK

ExtServices

com.android.ext.services

APK

Media Codecs

com.android.media.swcodec

APEX

Media Extractors and Media2 APIs

com.android.media

APEX

ModuleMetadata

com.android.modulemetadata

APK

Network Stack Permission Configuration

com.android.networkstack.permissionconfig

APK

Network Components

com.android.networkstack

APK

PermissionController

com.android.permissioncontroller

APK

Time Zone Data

com.android.tzdata

APEX