Android 10 introduced Mainline (formerly called modular system components on this site). Mainline modularizes some Android system components and enables them to be updated outside of the normal Android release cycle. This enables Google and Android partners to distribute updates broadly, quickly, and seamlessly to end-user devices in a nonintrusive manner.
End-user devices can receive Mainline updates from the Android Google Play system update feature (which runs on the Google Play Store infrastructure) or through a partner-provided over-the-air (OTA) mechanism.
Architecture
Mainline converts selected system components into modules. The modular architecture shown in Figure 1 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. Mainline architecture
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.
Module updates
Some Mainline modules use the APEX container format (introduced in Android 10) and some use the APK format.
Updated Mainline modules can be packaged together and pushed to end-user devices, either by Google, using the Google Play system update feature, or by the Android partner, using a partner-provided OTA mechanism. The module package installs and rolls back atomically; either all modules that need to be updated are updated or none are updated.
Available modules
Module name | Package name | Type | Release introduced |
---|---|---|---|
AdServices | Multiple | Multiple | Android 13 |
adbd | com.android.adbd |
APEX | Android 11 |
Android Health |
|
APEX | Android 14 |
AppSearch | com.android.appsearch |
APEX | Android 13 |
ART | com.android.art |
APEX | Android 12 |
Bluetooth |
|
APEX | Android 13 |
CellBroadcast | com.android.cellbroadcast |
APEX | Android 11 |
Config Infrastructure | com.android.configinfrastructure |
APEX | Android 14 |
Conscrypt | com.android.conscrypt |
APEX | Android 10 |
Device Scheduling | com.android.scheduling |
APEX | Android 12 |
DNS Resolver | com.android.resolv |
APEX | Android 10 |
DocumentsUI | com.android.documentsui |
APK | Android 10 |
ExtServices | com.android.ext.services |
APK (Android 10)
APEX (Android 11) |
Android 10 |
IPsec/IKEv2 Library | com.android.ipsec |
APEX | Android 11 |
Media | Media: com.android.media Media Codecs: com.android.media.swcodec |
APEX | Android 10 (extractors, MediaSession API)
Android 11 (MediaParser API) |
MediaProvider | com.android.mediaprovider |
APEX | Android 11 |
ModuleMetadata | com.android.modulemetadata |
APK | Android 10 |
Network Stack | Network Stack Permission Configuration: com.android.networkstack.permissionconfig Captive Portal Login: com.android.captiveportallogin Network Components: com.android.networkstack |
APK | Android 10 |
NNAPI Runtime | com.android.neuralnetworks |
APK | Android 11 |
OnDevicePersonalization Runtime | Multiple | Multiple | Android 13 |
PermissionController | com.android.permissioncontroller |
APK | Android 10 |
Remote Key Provisioning | com.android.rkpd |
APEX | Android 14 |
SDK Extensions | com.android.sdkext |
APEX | Android 11 |
Statsd | com.android.os.statsd |
APEX | Android 11 |
Tethering | com.android.tethering |
APEX | Android 11 |
Time Zone Data | com.android.tzdata |
APEX | Android 10 |
UWB | com.android.uwb |
APEX | Android 13 |
Wi-Fi | com.android.wifi |
APEX | Android 11 |