Support pass BCP art/vdex/oat files by FD
This is currently used by odrefresh.
Main runtime changes are:
1. When reading the image header, also tries to read from the FD if
provided.
2. Initialize the art/vdex/odex FDs in the boot image chunk if provided.
This allows them to be opened (in case if the file is not accessible
by path) in LoadComponents.
3. OpenBootDexFiles: accept BCP JARs passed as FD, in case if the file
is not accessible by path.
4. The new FDs are passed from new runtime args,
-Xbootclasspath{art,vdex,oat}fds.
It is used in odrefresh to pass the previous output of BCP extensions to
be used in the next phase, system server compilation.
Bug: 193720426
Test: odrefresh --use-compilation-os=10 --force-compile # exit 80
odrefresh --verify # exit 0 (was 79 previosly)
Test: Verify the checksum of output files are the same, with
--use-compilation-os or not, i.e. regardless where the compilation
happens
Test: mma in art/
Change-Id: I209085f047c42823ff20415804f65a9b32378b40
14 files changed