The Profiling module was introduced in Android 16 and lets apps collect profiling data using Perfetto on public devices in the field.
- Apps can request profiling using Java heap dump, heap profile, stack sampling, or system trace, and set select configurations for each.
- Apps can register interest in receiving traces of certain events and the system can start and stop the trace for the apps.
- Results are redacted to contain information relating to the requesting process only and delivered to the app's storage directory for further processing by the app.
- Requests are rate limited and not guaranteed to be filled.
Module boundary
- Profiling Mainline APEX -
com.google.android.profiling
:- Profiling API surface (Java):
- Code location:
packages/modules/Profiling/framework
- Process:
boot_class_path
- Code location:
ProfilingService
(Java):- Code location:
packages/modules/Profiling/service
- Process:
system_server
- Code location:
- Profiling API surface (Java):
Package format
The Profiling module ships as an APEX package (com.google.android.profiling
).
The module contains two JAR files:
framework-profiling.jar
: Contains the API surface that a caller interacts with. This is a part of the bootclasspath.service-profiling.jar
: Contains a new system service,ProfilingService
. Loaded by the system server process.
Dependencies
This module has no external dependencies.