Cite as
Addai, D., SectraTEK Lab (2026). Same artifact, different Android versions. LAB-0003, version 1.0. https://lab.sectratek.com/research/lab-0003/
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
| Android | Where it lives | Shape of the record | Reader A returns | Reader B returns | In our sample |
|---|---|---|---|---|---|
| Settings values. Reader A: Plain XML parser. Reader B: Android Binary XML decoder. | |||||
| Android 10 | data/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 12 | data/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 13 | data/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 14 | data/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 15 | Not 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 16 | data/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 10 | Full 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 12 | Full 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 13 | Full 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 14 | Full 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 15 | Bug 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 16 | Full 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 10 | data/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 12 | data/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 13 | data/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 14 | data/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 15 | Not 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 16 | data/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 10 | data/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 12 | data/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 13 | data/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 14 | data/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 15 | Not 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 16 | data/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. |
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 Binary XML (ABX)
- Plain XML
Show this figure as a table
| Android | Extractions | Settings file format |
|---|---|---|
| 10 | 1 | Plain XML (5 files) |
| 11 | 0 | Not in the sample |
| 12 | 1 | ABX |
| 13 | 2 | ABX |
| 14 | 1 | ABX |
| 15 | 0 | Not in the sample |
| 16 | 9 | ABX |
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.xmlAndroid 12 and later
data/misc_de/<u>/apexdata/com.android.permission/runtime-permissions.xmlSaved Wi-Fi networks
Android 10
data/misc/wifi/WifiConfigStore.xmlAndroid 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 XMLAndroid 12 and later
data/system/users/<u>/settings_secure.xmlAndroid Binary XMLShow this figure as a table
| Artifact | Android 10 | Android 12 and later |
|---|---|---|
| Permission grants | data/system/users/<u>/runtime-permissions.xml | data/misc_de/<u>/apexdata/com.android.permission/runtime-permissions.xml |
| Saved Wi-Fi networks | data/misc/wifi/WifiConfigStore.xml | data/misc/apexdata/com.android.wifi/WifiConfigStore.xml, with per-user copies under data/misc_ce/<u>/apexdata/com.android.wifi/ |
| Settings values | data/system/users/<u>/settings_secure.xml, plain XML | The same path, Android Binary XML |
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
- Android 10 reports
- Android 15 and 16 reports
Show this figure as a table
| Bug report | Uid-level mode lines | Share of "ignore" | Mode rows | Access rows |
|---|---|---|---|---|
| Huawei, Android 10 | 152 | 43.4% | 639 | 1,146 |
| Transsion-brand, Android 10 | 120 | 52.5% | 709 | 1,373 |
| Motorola, Android 15 | 89,199 | 99.8% | 4,261 | 4,128 |
| Samsung (mid-range), Android 16 | 32,633 | 99.7% | 3,001 | 2,883 |
| Samsung (flagship), Android 16 | 42,419 | 99.1% | 5,592 | 5,721 |
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
- On a test phone you own, take a full file system extraction, or generate a bug report, and write down the Android version.
- List the settings files under
data/system/users/<u>/and read the first four bytes of each.41 42 58 00means ABX. - Look for the permission and Wi-Fi files at the paths in Figure 3 for your version.
- 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. - 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.
| No. | Claim or number | Report | Section |
|---|---|---|---|
| 1 | 53 of 58 settings files were ABX; the XML parser rejected 53; the text search found nothing; the decoder recovered 69 to 505 settings per file | LAB-TR-0017 | 1; 4.5 (Table 7, P5) |
| 2 | Settings files plain XML on Android 10 (5 files), ABX on Android 12, 13, 14 and 16; extractions per version 1, 1, 2, 1, 9 | LAB-TR-0017 | 3.1 (Table 1); 4.2 (Table 3); 4.4 (Figure 2) |
| 3 | ABX starts with bytes 41 42 58 00; the format first appeared on Android 12 test images | LAB-TR-0017 | 2.1 |
| 4 | Wi-Fi store and runtime permission file are plain XML on all versions; do not assume ABX for every system XML file | LAB-TR-0017 | 4.2 (Table 3); 4.4 (Table 6) |
| 5 | Legacy 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 13 | LAB-TR-0017 | 4.3 (Table 5) |
| 6 | Permission 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 empty | LAB-TR-0017 | 4.2 (Table 3); 4.5 (Table 7, P8) |
| 7 | Credential-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-0017 | 4.2 (Table 3 and text); 4.3 (Table 5); 4.5 (Table 7, P6) |
| 8 | A bug report does not carry the lock settings database; 60% of lock-state facts not carried, over seven bug reports | LAB-TR-0019 | 5.1 (Table 4 and text) |
| 9 | Sample: 14 Android extractions (12 Samsung, one Motorola, one Pixel); Android 10 (1), 12 (1), 13 (2), 14 (1), 16 (9); no Android 11 or 15 | LAB-TR-0017 | 3.1 (Table 1) |
| 10 | App 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 access | LAB-TR-0003 | 2.1; 2.2; 3 (Table 1); 3.2 |
| 11 | 328,519 database rows on five Android 16 images, all reproduced | LAB-TR-0003 | 5.1; 5.2 |
| 12 | 1,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%) unexplained | LAB-TR-0003 | 5.3; 5.4 (Tables 4 and 5) |
| 13 | 941 rows on two images differ between the main file alone and the file with its write-ahead log | LAB-TR-0003 | 5.6 |
| 14 | The 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 16 | LAB-TR-0003; LAB-TR-0017 | 0003: 5.1. 0017: 4.5 (Table 7, P8) |
| 15 | Bug 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 line | LAB-TR-0003 | 5.5 (Table 8 and Version differences) |
| 16 | Samsung 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 only | LAB-TR-0006 | 1; 5.3 (Table 6) |
| 17 | The six reading habits: format from the first bytes, per-release names and paths, database with its log, time matched to a window, four reported states | LAB-TR-0017; LAB-TR-0003 | 0017: 5. 0003: 6.1; 6.4; 6.5 |
| 18 | The five bug reports: Huawei (Android 10), Transsion-brand (Android 10), Motorola (Android 15), two Samsung (Android 16) | LAB-TR-0003 | 4.1 (Table 2); 5.5 (Table 8) |
Version history and corrections
| Version | Date | Change |
|---|---|---|
| 1.0 | 2026-11-06 | First 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.