Notable changes:
- multiple previously-unparseable overlays are added for felix and tangorpro
- fingerprint setup strings are no longer cut-off at first line
- udfps_lottie_translate_y dimension is now parsed correctly
- "Face unlock"-related strings are removed ("Face unlock" is not shipped)
Previous parser relied on text output of `aapt2/ dump xmltree` and `aapt2 dump resources` commands,
which is not meant for parsing.
This led to multiple parsing bugs: cutoff multiline strings, floating point parsing issues,
quoting issues, non-English locale issues etc.
Rewritten parser instead relies on protobuf aapt2 output, which allows to resolve most of these
issues.
A simple patch to aapt2 in frameworks/base is required to slightly expand its protobuf output.
Other notable changes:
- support for the "fraction" resource type
- parsing is now parallelized at APK level
Inline carrier settings extraction is no longer used.
This directory is not filtered out elsewhere, it will still be included in full (non-prep) vendor
modules. However, collected system state files that were generated prior to this commit need to be
regenerated, since they list these files as included in AOSP due to the way dep_files directive
works.
This commit adds an extra step to generate-all:
- if --updateSpec flag is specified, FileTreeSpec of the generated vendor module is written out
to vendor-specs/$VENDOR/$DEVICE.yaml file ("reference FileTreeSpec").
- if --updateSpec is not specified, FileTreeSpec of the generated vendor module is compared against
the reference FileTreeSpec. If there are any differences, generated vendor module is deleted and an
exception is thrown.
Also, when --updateSpec flag is used, text files inside vendor module are written out to
vendor-skels/$VENDOR/$DEVICE directory.
Contents of vendor-skels/ are useful for keeping track of vendor module changes via git and for
showing diffs in case text files in the generated module don't match the reference ones.
These directives are usually very large and are less interesting than PRODUCT_<partition>_PROPERTIES,
PRODUCT_OVERRIDE_FINGERPRINT variables. Move them to the bottom to improve readability.
- pass device config with the standard -d flag instead of through argument
- default to using factory and OTA images for current build ID when --stockSrc is not specified
- add extract_android_ota_payload.py as the final step, with an option to skip it
- pass device config with the standard -d flag instead of through argument. This allows to specify
multiple devices without using DeviceList config file
- default to using factory image for current build ID when --stockSrc is not specified
- support unpacking factory images without root by using debugfs rdump (ext4) and
fsck.erofs --extract (erofs)
- support reusing unpacked factory images between adevtool runs to reduce latency
- unpack factory images for multiple devices in parallel. Extraction of files from partition images
is parallelized too
- extract partition images from factory image inner zip directly, without extracting it, since this
inner zip is uncompressed
This is a zip unpacking library.
unzipit library that is already present doesn't support extracting from inner factory image zips
without unpacking them and extracts files to memory first, which consumes huge amount of memory
when unpacking factory images, especially in parallel.
- define a default download directory
- obtain image URL and checksum from the Git-tracked local build index instead of fetching it from
remote server
- default to downloading images for the current build ID
- download image to a temporary file first, mark it as complete only after checksum verification
Extracts the following image properties:
- device name
- build ID
- build desctiption
- image download link
- image file SHA-256
Images are grouped by '$DEVICE $BUILD_ID' key.
Beta factory/OTA image pages are supported too.
JSDOM dependency is added for simple and correct parsing of these pages.
- support specifying device{,-list} config with config file name instead of config path
- support loading mutliple device{,-list} configs at once. Previously, loading multiple device
configs was supported only by passing a device-list config
- parallelize config loading with promises