Research / LAB-0003

Same artifact, different Android versions

The same record on an Android phone can sit in a different file, a different folder or a different shape from one Android version to the next. A reader built for one layout often returns an empty table on another, with no error. This article follows four artifacts across versions and shows what the wrong layout returns.

  • Daniel Addai, SectraTEK Lab
  • Version 1.0
  • 2026-11-06
  • CC BY 4.0
  • Early research

Cite as

Addai, D., SectraTEK Lab (2026). Same artifact, different Android versions. LAB-0003, version 1.0. https://lab.sectratek.com/research/lab-0003/

Citation guide

Methodology note

Drafted with AI assistance and reviewed by the author before publication.

Summary

  • A reader built for one layout can return nothing on another Android version, and an empty result looks the same as a feature the person never used.
  • Three kinds of change appear in our sample: encoding (settings files became Android Binary XML from Android 12), place (permission and Wi-Fi files moved to a new folder) and shape (one access is stored as an aggregate row, a last-access time and a text dump).
  • Older guides still name keys and files that were absent from every current phone we checked, for example a legacy settings database, absent from all 14.
  • Our sample has no Android 11 and no Android 15 full file system. Those gaps are part of the result, and the figure below shows them as such.
  • A careful reader says why a field is empty, and names the versions it did not test.

When the right file gives the wrong answer

An examiner asks whether USB debugging was on. The reader opens the settings file, looks for the setting and finds nothing. The field is empty. That looks like a setting nobody changed. It can also mean that the reader could not read the file.

Our own sample shows how easily this happens. From Android 12 the platform writes its settings files in Android Binary XML (ABX), a binary encoding of XML. In the sample, 53 of 58 settings files were ABX. A standard XML parser rejected all 53, and a text search for the usual setting pattern found nothing in them. A decoder for the binary format recovered between 69 and 505 settings per file [1]. A reader that catches the parse error and returns an empty list would report every setting on these phones as absent.

We call the cause a layout mismatch: the reader assumes one layout and the phone uses another. Three kinds appear in the Lab's research collection.

  • Encoding. The path is the same and the bytes are different.
  • Place. The file moved to a new folder, or the key was renamed.
  • Shape. The record itself means something different, for example a row that stands for a time window and not for one event.

The examples come from Lab Technical Reports on settings locations, App Ops history and parser failure modes. They cover Android 10 and Android 12 to 16 in full file system extractions, and Android 10, 15 and 16 in bug reports. Android 11 is missing, and there is no Android 15 full file system [9].

Try it: one artifact across versions

Figure 1 lets you pick an artifact, a reader built for one layout, and the Android version of the phone. The version buttons show what that reader returns on every version, so the pattern shows before you open a single result. Start with the default, settings values read by a plain XML parser on Android 12, then switch to the decoder.

This figure needs JavaScript. The table below it holds the same information.

Four artifacts, six Android versions. The word on each version button is what the chosen reader returns there. All values are layouts and counts, never values from a device.

Show this figure as a table
For each artifact and Android version: where the record lives, its shape, and what two readers built for different layouts return
AndroidWhere it livesShape of the recordReader A returnsReader B returnsIn our sample
Settings values. Reader A: Plain XML parser. Reader B: Android Binary XML decoder.
Android 10data/system/users/<u>/settings_global.xml, settings_secure.xml and settings_system.xml (the global file for user 0 only).Plain XML text with one <setting name= value=> element per setting. The legacy settings.db was not present.Reads it. Reads every setting. A text search for name="..." also finds them.Returns nothing. The decoder rejects a plain file. If the error is caught and an empty list returned, every setting looks absent.1 full file system. 5 settings files, all plain XML.
Android 12data/system/users/<u>/settings_global.xml, settings_secure.xml and settings_system.xml (the global file for user 0 only).Android Binary XML. The file starts with the bytes 41 42 58 00. The same <setting name= value=> elements, in a binary encoding.Returns nothing. The parser rejected all 53 binary settings files in the sample, and a text search for name="..." found nothing. A reader that returns an empty list reports every setting as absent.Reads it. Decodes the file. In the sample it recovered between 69 and 505 settings per file.1 full file system. All of its settings files were binary.
Android 13data/system/users/<u>/settings_global.xml, settings_secure.xml and settings_system.xml (the global file for user 0 only).Android Binary XML. The file starts with the bytes 41 42 58 00. The same <setting name= value=> elements, in a binary encoding.Returns nothing. The parser rejected all 53 binary settings files in the sample, and a text search for name="..." found nothing. A reader that returns an empty list reports every setting as absent.Reads it. Decodes the file. In the sample it recovered between 69 and 505 settings per file.2 full file systems. All of its settings files were binary.
Android 14data/system/users/<u>/settings_global.xml, settings_secure.xml and settings_system.xml (the global file for user 0 only).Android Binary XML. The file starts with the bytes 41 42 58 00. The same <setting name= value=> elements, in a binary encoding.Returns nothing. The parser rejected all 53 binary settings files in the sample, and a text search for name="..." found nothing. A reader that returns an empty list reports every setting as absent.Reads it. Decodes the file. In the sample it recovered between 69 and 505 settings per file.1 full file system. All of its settings files were binary.
Android 15Not examined.No data.No data in our sample. No full file system of this version in the sample.No data in our sample. No full file system of this version in the sample.No full file system of this version in the sample.
Android 16data/system/users/<u>/settings_global.xml, settings_secure.xml and settings_system.xml (the global file for user 0 only).Android Binary XML. The file starts with the bytes 41 42 58 00. The same <setting name= value=> elements, in a binary encoding.Returns nothing. The parser rejected all 53 binary settings files in the sample, and a text search for name="..." found nothing. A reader that returns an empty list reports every setting as absent.Reads it. Decodes the file. In the sample it recovered between 69 and 505 settings per file.9 full file systems. All of its settings files were binary.
App Ops history. Reader A: History databases. Reader B: Bug report dump.
Android 10Full file system: the app ops XML files, as plain XML. Bug report: the App Ops service dump.The dump is small: 152 and 120 uid-level mode lines (one line per app user id and mode), 43.4% and 52.5% of them "ignore". It prints no attribution-tag lines and no proxy text.No data in our sample. Not established for this version.Reads it. Reads the dump: 639 and 709 mode rows, 1,146 and 1,373 access rows. A reader that waits for proxy text or attribution-tag lines finds none.2 bug reports, one Huawei and one Transsion-brand. 1 full file system, read for file format only.
Android 12Full file system: the app ops XML files, in Android Binary XML.Last-access XML. No history database was examined.No data in our sample. Not established for this version.No data in our sample. No bug report of this version in the App Ops study.1 full file system, read for file format only.
Android 13Full file system: the app ops XML files, in Android Binary XML.Last-access XML. No history database was examined.No data in our sample. Not established for this version.No data in our sample. No bug report of this version in the App Ops study.2 full file systems, read for file format only.
Android 14Full file system: appops_accesses.xml (Android Binary XML), beside or instead of appops.xml. No history database.An older XML history layout and a folder of discrete operations were present instead of databases. They were seen on this one image and were not parsed.Returns nothing. A reader built to find the two history databases finds neither on this image.No data in our sample. No bug report of this version in the App Ops study.1 full file system.
Android 15Bug report: the App Ops service dump. No full file system of this version.4,261 mode rows and 4,128 access rows. 89,199 uid-level mode lines, 99.8% of them "ignore". Proxy text is printed on every such line.No data in our sample. No full file system of this version in the sample.Reads it. Reads the dump. It is a snapshot with no stored history, and almost every uid-level line says "ignore", so those lines carry little per-app information.1 bug report (Motorola).
Android 16Full file system: app_op_history_short_interval.db and app_op_history_long_interval.db, plus appops_accesses.xml. Bug report: the dump.A database row is an aggregate: the time of the first access in a one-minute (short) or fifteen-minute (long) window, and a count. The XML file keeps the last access per key. The dump is a snapshot.Reads it. Reads the stored rows exactly: 328,519 rows on five images. A row is a window, not one access. 941 rows on two images differ between the main file alone and the file with its write-ahead log.Reads it. Reads the dump: 3,001 and 5,592 mode rows, with 99.7% and 99.1% of the uid-level lines "ignore". A snapshot, not a history.5 full file systems and 2 bug reports (both Samsung).
Permission grants and saved Wi-Fi. Reader A: Android 10 paths. Reader B: Android 12 and later paths.
Android 10data/system/users/<u>/runtime-permissions.xml and data/misc/wifi/WifiConfigStore.xml.Plain XML. One permission element per package; one network block per saved network, with its security type.Reads it. The paths match the files.Returns nothing. The paths under apexdata match no file. The reader returns no grants and no networks, which looks like a phone with none.1 full file system.
Android 12data/misc_de/<u>/apexdata/com.android.permission/runtime-permissions.xml and data/misc/apexdata/com.android.wifi/WifiConfigStore.xml (per-user copies under data/misc_ce/<u>/apexdata/com.android.wifi/).Plain XML, not Android Binary XML, although the settings files on the same phone are binary. One permission element per package; one network block per saved network.Returns nothing. The Android 10 paths match no file. The reader returns no grants and no networks, which looks like a phone with none.Reads it. The paths match. The binary decoder must not be applied to these two files.1 full file system.
Android 13data/misc_de/<u>/apexdata/com.android.permission/runtime-permissions.xml and data/misc/apexdata/com.android.wifi/WifiConfigStore.xml (per-user copies under data/misc_ce/<u>/apexdata/com.android.wifi/).Plain XML, not Android Binary XML, although the settings files on the same phone are binary. One permission element per package; one network block per saved network.Returns nothing. The Android 10 paths match no file. The reader returns no grants and no networks, which looks like a phone with none.Reads it. The paths match. The binary decoder must not be applied to these two files.2 full file systems.
Android 14data/misc_de/<u>/apexdata/com.android.permission/runtime-permissions.xml and data/misc/apexdata/com.android.wifi/WifiConfigStore.xml (per-user copies under data/misc_ce/<u>/apexdata/com.android.wifi/).Plain XML, not Android Binary XML, although the settings files on the same phone are binary. One permission element per package; one network block per saved network.Returns nothing. The Android 10 paths match no file. The reader returns no grants and no networks, which looks like a phone with none.Reads it. The paths match. The binary decoder must not be applied to these two files.1 full file system.
Android 15Not examined.No data.No data in our sample. No full file system of this version in the sample.No data in our sample. No full file system of this version in the sample.No full file system of this version in the sample.
Android 16data/misc_de/<u>/apexdata/com.android.permission/runtime-permissions.xml and data/misc/apexdata/com.android.wifi/WifiConfigStore.xml (per-user copies under data/misc_ce/<u>/apexdata/com.android.wifi/).Plain XML, not Android Binary XML, although the settings files on the same phone are binary. One permission element per package; one network block per saved network.Returns nothing. The Android 10 paths match no file. The reader returns no grants and no networks, which looks like a phone with none.Reads it. The paths match. The binary decoder must not be applied to these two files.9 full file systems.
Lock screen store. Reader A: Older credential keys. Reader B: Synthetic-password handle.
Android 10data/system/locksettings.db, table locksettings (name, value, user). Blob files under data/system_de/<u>/spblob/.SQLite in write-ahead log mode on this image. Holds sp-handle; may hold the older lockscreen.password_type.Present on some phones only. The key was on 2 of the 14 extractions in the sample, and only on Android 10 and 13 ones. Check each phone; do not expect it.Reads it. Finds sp-handle, which points to the synthetic-password blob. Opened without its -wal file, committed rows could be missing; on this image the row count did not change.1 full file system.
Android 12data/system/locksettings.db, table locksettings (name, value, user). Blob files under data/system_de/<u>/spblob/.SQLite with a rollback journal. Holds sp-handle. The older credential-type key was not present.Returns nothing. The key is not in the table. The reader reports no credential type. The store holds sp-handle instead.Reads it. Finds sp-handle, which points to the synthetic-password blob. It was in all 14 extractions.1 full file system.
Android 13data/system/locksettings.db, table locksettings (name, value, user). Blob files under data/system_de/<u>/spblob/.SQLite with a rollback journal. Holds sp-handle. The older credential-type key may be present.Present on some phones only. The key was on 2 of the 14 extractions in the sample, and only on Android 10 and 13 ones. Check each phone; do not expect it.Reads it. Finds sp-handle, which points to the synthetic-password blob. It was in all 14 extractions.2 full file systems.
Android 14data/system/locksettings.db, table locksettings (name, value, user). Blob files under data/system_de/<u>/spblob/.SQLite with a rollback journal. Holds sp-handle. The older credential-type key was not present.Returns nothing. The key is not in the table. The reader reports no credential type. The store holds sp-handle instead.Reads it. Finds sp-handle, which points to the synthetic-password blob. It was in all 14 extractions.1 full file system.
Android 15Not examined. A bug report does not carry the lock settings database.No data.No data in our sample. No full file system of this version in the sample.No data in our sample. No full file system of this version in the sample.No full file system of this version in the sample.
Android 16data/system/locksettings.db, table locksettings (name, value, user). Blob files under data/system_de/<u>/spblob/.SQLite with a rollback journal. Holds sp-handle. The older credential-type key was not present.Returns nothing. The key is not in the table. The reader reports no credential type. The store holds sp-handle instead.Reads it. Finds sp-handle, which points to the synthetic-password blob. It was in all 14 extractions.9 full file systems.
Figure 1Version switcher for four artifacts. A reader built for one layout reads it, returns nothing, or returns it only on some phones; "No data" marks a case our sample did not cover. Source: Lab Technical Reports LAB-TR-0003, LAB-TR-0017 and LAB-TR-0019 (rows 1 to 18 of the Sources table). Layouts and counts only.

Two things to notice. First, the pattern follows a change in layout, not a missing feature: the phone has the same setting before and after the change. Second, "No data" is part of the result. It marks a version our sample did not cover, and it is not a finding that nothing is there.

Same path, different encoding

An ABX file starts with the four bytes 41 42 58 00. The format first appeared on Android 12 test images, mostly in system files [3]. In our sample every settings file on Android 12, 13, 14 and 16 was ABX, and the one Android 10 phone used plain XML (Figure 2).

Full file system extractions by Android version, and the format of their settings files

  • Android 101 extraction, plain XML
  • Android 11None in the sample
  • Android 121 extraction, ABX
  • Android 132 extractions, ABX
  • Android 141 extraction, ABX
  • Android 15None in the sample
  • Android 169 extractions, ABX
  • Android Binary XML (ABX)
  • Plain XML
Show this figure as a table
Full file system extractions per Android version and the format of their settings files
AndroidExtractionsSettings file format
101Plain XML (5 files)
110Not in the sample
121ABX
132ABX
141ABX
150Not in the sample
169ABX
Figure 2The switch from plain XML to ABX for the settings files, by Android version. Bar length is the number of extractions, on one scale. Source: LAB-TR-0017, Section 4.4 (58 settings files on 14 extractions).

The change is not uniform. Two files in the same part of the system, the Wi-Fi store and the runtime permission file, were plain XML on every version. A reader that applies the binary decoder to every system XML file fails the other way round. The check is cheap: read the first four bytes and decide [4].

A related trap is the old settings database. Guides describe a settings.db under the settings provider. It was absent from all 14 Android extractions, and files with that name belonged to other apps on 12 of them [5].

Same file, different place

Some artifacts keep their format and move. The runtime permission file and the Wi-Fi configuration store sit under the system folders on Android 10 and under an apexdata folder from Android 12 (Figure 3). A reader with the Android 10 paths finds no file on a later phone and returns no grants and no saved networks [6]. The empty table is the same one a phone with none would give, so a missing path needs a stated reason.

Permission grants

Android 10

data/system/users/<u>/runtime-permissions.xml

Android 12 and later

data/misc_de/<u>/apexdata/com.android.permission/runtime-permissions.xml

Saved Wi-Fi networks

Android 10

data/misc/wifi/WifiConfigStore.xml

Android 12 and later

data/misc/apexdata/com.android.wifi/WifiConfigStore.xmldata/misc_ce/<u>/apexdata/com.android.wifi/ (per-user copies)

Settings values (same path, new encoding)

Android 10

data/system/users/<u>/settings_secure.xmlplain XML

Android 12 and later

data/system/users/<u>/settings_secure.xmlAndroid Binary XML
Show this figure as a table
Where three artifacts live on Android 10 and on Android 12 and later
ArtifactAndroid 10Android 12 and later
Permission grantsdata/system/users/<u>/runtime-permissions.xmldata/misc_de/<u>/apexdata/com.android.permission/runtime-permissions.xml
Saved Wi-Fi networksdata/misc/wifi/WifiConfigStore.xmldata/misc/apexdata/com.android.wifi/WifiConfigStore.xml, with per-user copies under data/misc_ce/<u>/apexdata/com.android.wifi/
Settings valuesdata/system/users/<u>/settings_secure.xml, plain XMLThe same path, Android Binary XML
Figure 3Two files that moved and one that stayed. The permission and Wi-Fi files are plain XML on every version; the settings files change encoding in place. Source: LAB-TR-0017, Section 4.2 (Table 3) and Section 4.5. Paths relative to the file system root; <u> is the Android user number.

Names move too. In the lock settings store, the key that older guides use for the credential type was present on 2 of 14 extractions, and only on Android 10 and 13 ones. A legacy pattern key was on none. What was on every one is sp-handle, which points to the synthetic-password blob. The credential files that older guides name, gesture.key and password.key, were absent from all 14 [7]. In the same way the build fingerprint property of older guides was in none of 13 system build property files, while its system-prefixed form was in all 13 [5].

A bug report does not repair this. It does not carry the lock settings database at all, and in a reconstruction over seven bug reports 60% of the lock-state facts could not be carried by that evidence [8]. For a lock question on a phone known only through a bug report, the supported answer is "not determinable from this evidence", not "no lock".

Same record, different shape

App Ops records which app used a protected resource, such as the camera, the microphone or the location, and when. On Android 16 in our sample the same access is stored in three forms: two history databases, one XML file, and a text dump in every bug report. They are not copies of one record [10].

  • A database row is an aggregate. It covers one window, one minute in the short-interval database and fifteen minutes in the long-interval one. It holds the time of the first access in the window and a count.
  • The XML file holds the last access for each key and nothing earlier.
  • The dump prints a snapshot at the moment the report was made.

A reader that expects the XML time to equal a database time finds a match for 1,717 of 3,180 times (54.0%). For 1,182 of the other 1,463 (80.8%), the XML time sits inside a window whose row counted more than one access, as the first-versus-last difference predicts. The other 281 are unexplained [12]. The file is read correctly. The comparison rule is the one that has to change: match a time to a window, not to an equal value. Reading the stored rows exactly (328,519 rows on five images) [11] still gives windows, not accesses, and 941 rows on two images differ between the main database file alone and the file with its write-ahead log [13].

None of this holds on every version. The Android 14 image had no history database. It carried an older XML history layout and a folder of discrete operations, which we saw on that one image and did not parse. The file appops_accesses.xml stood beside or instead of appops.xml on Android 14 and 16 [14].

The dump changes as well. Figure 4 compares the five bug reports in the App Ops study.

Share of uid-level App Ops mode lines that read "ignore", per bug report

  • Huawei, Android 10152 uid-level lines43.4%
  • Transsion-brand, Android 10120 uid-level lines52.5%
  • Motorola, Android 1589,199 uid-level lines99.8%
  • Samsung (mid-range), Android 1632,633 uid-level lines99.7%
  • Samsung (flagship), Android 1642,419 uid-level lines99.1%
  • Android 10 reports
  • Android 15 and 16 reports
Show this figure as a table
Uid-level mode lines and the share of ignore mode, per bug report
Bug reportUid-level mode linesShare of "ignore"Mode rowsAccess rows
Huawei, Android 1015243.4%6391,146
Transsion-brand, Android 1012052.5%7091,373
Motorola, Android 1589,19999.8%4,2614,128
Samsung (mid-range), Android 1632,63399.7%3,0012,883
Samsung (flagship), Android 1642,41999.1%5,5925,721
Figure 4Share of uid-level mode lines in the App Ops dump that say "ignore". A uid-level line gives the mode for one app user id. Bar length is the share, on a 0 to 100% scale. Source: LAB-TR-0003, Section 5.5 (Table 8). Counts of this sample, not a statistic.

The two Android 10 reports print few uid-level lines, no attribution-tag lines and no proxy text, where the Android 15 and 16 reports print the proxy text on every such line [15]. Each version in this sample comes with a different manufacturer, so the figure cannot separate a version effect from a vendor effect [18].

Shape also changes with a schema. On Android 16, a Samsung media database no longer had a location table but kept a view over it, so a reader's address join failed. The error went to the log and the report showed an empty table. On four images the unfixed reader returned 0, 0, 0 and 3 rows where the fixed reader returns 5,523, 215, 4,582 and 1,450 [16].

Reading by version

A reader cannot avoid the differences, but it can avoid hiding them. The Lab's reports point to six habits [17].

  • Find the format from the first bytes, not from the file name.
  • Keep paths and key names per release, and say which release a read assumed.
  • Open a database with its write-ahead log file, and state that you did.
  • Match a time to a window when one form stores an aggregate.
  • Report four states, not two: a value was read; the key is absent from a file that was read; the file is absent; the file could not be read.
  • Add a fifth: this version was not tested.

Open-source readers for part of this exist. The bug report App Ops readers are merged in ALEAPP (pull request 1816) and the history database readers are in review (pull request 1786). The media database fix is pull request 1779.

What this does not prove

Read these before you rely on a layout

  • One or two extractions per version show that a layout exists. They do not show that it is the rule for that version.
  • No Android 11 and no Android 15 full file system were examined. Nothing here says they match the versions on either side.
  • Twelve of the 14 full file systems are Samsung phones, so version and manufacturer are tangled. A layout may belong to the vendor build and not to the Android version.
  • An empty read does not prove absence, and a successful read does not prove the value is correct or says what the user did. A database row is a record the device stored, not a deliberate action.
  • The counts describe this sample. They are not statistics for any population of phones.

Reproduce

  1. On a test phone you own, take a full file system extraction, or generate a bug report, and write down the Android version.
  2. List the settings files under data/system/users/<u>/ and read the first four bytes of each. 41 42 58 00 means ABX.
  3. Look for the permission and Wi-Fi files at the paths in Figure 3 for your version.
  4. For App Ops, list the history database files and appops_accesses.xml, and look for the App Ops service dump in a bug report. Write down which forms your phone has.
  5. Write down what you could not check, and why that does not prove anything.

Sources

Every number and claim above comes from a Lab Technical Report. LAB-TR-0003 is on Zenodo (10.5281/zenodo.23717924, all versions). LAB-TR-0006 is on Zenodo (10.5281/zenodo.23717928, all versions). LAB-TR-0017 and LAB-TR-0019 are available on this site (no DOI yet). Pages: LAB-TR-0003, LAB-TR-0006, LAB-TR-0017, LAB-TR-0019.

Claims and numbers in this article, with the report and section each comes from
No.Claim or numberReportSection
153 of 58 settings files were ABX; the XML parser rejected 53; the text search found nothing; the decoder recovered 69 to 505 settings per fileLAB-TR-00171; 4.5 (Table 7, P5)
2Settings files plain XML on Android 10 (5 files), ABX on Android 12, 13, 14 and 16; extractions per version 1, 1, 2, 1, 9LAB-TR-00173.1 (Table 1); 4.2 (Table 3); 4.4 (Figure 2)
3ABX starts with bytes 41 42 58 00; the format first appeared on Android 12 test imagesLAB-TR-00172.1
4Wi-Fi store and runtime permission file are plain XML on all versions; do not assume ABX for every system XML fileLAB-TR-00174.2 (Table 3); 4.4 (Table 6)
5Legacy settings.db absent from all 14 (same name inside other apps on 12); build fingerprint property in 0 of 13 files, system-prefixed form in 13LAB-TR-00174.3 (Table 5)
6Permission and Wi-Fi files in the system folders on Android 10 and under apexdata from Android 12; present on 13 extractions (apexdata) and 1 (Android 10); a path from an older release returns emptyLAB-TR-00174.2 (Table 3); 4.5 (Table 7, P8)
7Credential-type key on 2 of 14 extractions (Android 10 and 13), legacy pattern key on 0, sp-handle on 14; gesture.key and password.key absent from all 14; locksettings.db in rollback mode on 13 and write-ahead log mode on 1 (Android 10)LAB-TR-00174.2 (Table 3 and text); 4.3 (Table 5); 4.5 (Table 7, P6)
8A bug report does not carry the lock settings database; 60% of lock-state facts not carried, over seven bug reportsLAB-TR-00195.1 (Table 4 and text)
9Sample: 14 Android extractions (12 Samsung, one Motorola, one Pixel); Android 10 (1), 12 (1), 13 (2), 14 (1), 16 (9); no Android 11 or 15LAB-TR-00173.1 (Table 1)
10App Ops history on Android 16 in two databases (one-minute and fifteen-minute windows), an XML file and a bug report dump; a row holds the first access of its window and a count, the XML file the last accessLAB-TR-00032.1; 2.2; 3 (Table 1); 3.2
11328,519 database rows on five Android 16 images, all reproducedLAB-TR-00035.1; 5.2
121,717 of 3,180 XML times (54.0%) equal a database time; 1,182 of the other 1,463 (80.8%) inside a window with a count above one; 281 (19.2%) unexplainedLAB-TR-00035.3; 5.4 (Tables 4 and 5)
13941 rows on two images differ between the main file alone and the file with its write-ahead logLAB-TR-00035.6
14The Android 14 image had no history database; older XML history layout and a discrete folder seen on one image and not parsed; appops_accesses.xml beside or instead of appops.xml on Android 14 and 16LAB-TR-0003; LAB-TR-00170003: 5.1. 0017: 4.5 (Table 7, P8)
15Bug report rows, uid-level lines and ignore shares in Figure 4; Android 10 reports print no attribution-tag lines and no proxy text, Android 15 and 16 print the proxy text on every such lineLAB-TR-00035.5 (Table 8 and Version differences)
16Samsung media database on Android 16: location table removed, view kept; unfixed 0, 0, 0 and 3 rows against 5,523, 215, 4,582 and 1,450 fixed; error in the log onlyLAB-TR-00061; 5.3 (Table 6)
17The six reading habits: format from the first bytes, per-release names and paths, database with its log, time matched to a window, four reported statesLAB-TR-0017; LAB-TR-00030017: 5. 0003: 6.1; 6.4; 6.5
18The five bug reports: Huawei (Android 10), Transsion-brand (Android 10), Motorola (Android 15), two Samsung (Android 16)LAB-TR-00034.1 (Table 2); 5.5 (Table 8)

Version history and corrections

Version history
VersionDateChange
1.02026-11-06First publication.

Corrections log

No corrections have been published for this article. Corrections to any article are listed on Corrections, with the version they apply to.