The dexopt implementation in the package manager only applies to Android 13 and lower. In Android 14, it is replaced by ART Service, and it will be removed from the package manager in the next version. For information about configuring ART Service, see ART Service Configuration.
Since Android 7.0, there's a generic way to specify the level of compilation/verification that happened at various stages. The compilation levels can be configured via system properties with the defaults being:
pm.dexopt.install=speed-profile
pm.dexopt.bg-dexopt=speed-profile
pm.dexopt.boot-after-ota=verify
pm.dexopt.first-boot=verify
-
The compilation filter for the first time the device ever boots. The filter used here only affects the boot time after factory. We recommend the filter
verify
for it to avoid long times before a user gets to use the phone for the very first time. Note that if all applications in the system image are already compiled withverify
,speed-profile
, orspeed
with the right class loader context, the compilation on the first boot will be skipped, andpm.dexopt.first-boot
will have no effect.
This is the compilation filter used when installing applications through Google Play or other app
stores. We recommend the install filter be set to speed-profile
in order to enable
the use of profiles from the dex metadata files (see
blog).
Note that if a profile isn't provided or if it is empty, speed-profile
is equivalent
to verify
.
This is the compilation filter used when the device is idle and charging. Try the
speed-profile
compiler filter to take advantage of profile-guided compilation and save
on storage.
The compilation filter used after an over-the-air update. We
strongly recommend the verify
compiler filter for this
option to avoid very long boot times.