Stay organized with collections Save and categorize content based on your preferences.

The OnDevicePersonalization module, introduced in Android 13, provides a set of building blocks developed with user privacy as their core tenet, to support development of APKs that offer a personalized experience for their users. Examples of the building blocks provided include a policy engine to guard the ingress, egress, and allow-listed operations of user data. User controls can be expressed as policies that are enforced by this policy engine. Another example of the building blocks provided includes various federated computations, such as federated learning and federated analytics, that enable collaborative training of machine learning models and analysis of local raw data without central data collection.

OnDevicePersonalization attempts to create a developer experience that removes bottlenecks that arose from data collection, consent, control and compliance. This allows OEMs and app developers to focus on the novel and semantically interesting parts of their applications and take advantage of the super-rich and real-time data that's available only on the devices.


The goal of the OnDevicePersonalization module is to build new technology to enable OEMs and app developers to continue to offer a quality personalization experience to their end users while keeping user information private.

Module boundary

This is all new code with no module boundary.

Code Location: packages/modules/OnDevicePersonalization

Figure 1 shows the OnDevicePersonalization module API design.

OnDevicePersonalization module API design

Figure 1. OnDevicePersonalization module API design

Package format

Main functionality for the package will be available in APEX com.google.android.ondevicepersonalization.

OnDevicePersonalization API functionality will be available in APK com.google.android.ondevicepersonalization.

FederatedCompute APIs functionality will be available in APK com.google.android.federatedcompute.


  • Changes in PackageManager to interpret the new manifest tag