AndroidIntermediateInstalled apps

Package manager settings (packages.xml)

System packages.xml: installed package names, code paths, installer and ft/it/ut time attributes; may be Android Binary XML from Android 12.

01Location

  • /data/system/packages.xml

02Questions it answers

  • Which packages were installed when the file was written?
  • Which installer is recorded for an app?
  • When was a package last updated, and where is its code stored?

03Format and versions

FormatXML written by the package manager (Settings.java). From Android 12, system files may be stored as ABX (Android Binary XML, signature "ABX\0"), which must be converted before reading; ALEAPP detects both forms.
Applies toALEAPP's notes cite AOSP Settings.java at android-10, -13 and -16. At android-13 and android-16 the package record carries ft and ut but no it; the first install time is written per user to package-restrictions.xml.

04Key fields

FieldWhat it tells you
package@namePackage name.
@codePathDirectory of the installed code.
@installer / @installOriginatorInstaller package and originating installer as stored.
@ftLast-modified time of the package code path; also printed as timeStamp in package dumps.
@it / @utInstall time (older records) and update time.
@publicFlags / @privateFlagsPackage flag bit masks as stored.

05Timestamps

FieldEncodingNote
ftUnix epoch, milliseconds (hex text in XML)A file time of the installed code, not an install time; ALEAPP observed values in 1970 on some images.
itUnix epoch, milliseconds (hex text in XML)Absent from package records on Android 13 and 16 test images.
utUnix epoch, milliseconds (hex text in XML)Update time as stored by the package manager.

Decode raw values with the Timestamp decoder and convert local wall-clock times with the Local time to UTC.

06Examination workflow

  1. Check the first bytes for the ABX signature and convert to text XML if present.
  2. Parse each package element and convert ft, it and ut from hexadecimal milliseconds to UTC.
  3. Separate system packages from user-installed ones using codePath and flags.
  4. Where install time matters, read the per-user package-restrictions.xml as well.
  5. Cross-check with usage stats and app data folders.

07Interpretation pitfalls

  • Treat ft as code-file time; it is not evidence of when the user installed the app.
  • The file reflects state at its last write; it does not by itself list apps that were installed and later removed.
  • Attribute names and presence vary across releases; never infer a missing field's value.

09Sources

  1. ALEAPP — scripts/artifacts/packageInfo.py Alexis Brignoni et al. (GitHub) · checked 2026-10-14
  2. Android ABX (Binary XML) Alex Caithness, CCL Solutions Group (2022) · checked 2026-10-14