Allow dex2oat to handle relative paths.
During installation at compile time, the PackageManager is passing
shared libraries to dex2oat with -classpath. For split apps, we want the
splits to have the proper dependencies, and are now passing previous
parts of the split apk as shared libraries as we compile them all. These
apks are staged in a temp dir during compilation, so we pass a relative
path for them instead.
Since PackageManager can now pass relative paths to dex2oat as shared
libraries, dex2oat has an added --classpath-dir switch to specify the
directory to use for relative class paths. At runtime when checking
shared libraries, we use oat file functionality to resolve relative paths
to determine if the paths match.
Bug: 34169257
Test: cts-tradefed run singleCommand cts -d --module
CtsAppSecurityHostTestCases -t android.appsecurity.cts.SplitTests
Merged-In: I9667f0069c8d12e94598f8a78888d3855d870824
(cherry-picked from commit f79ac83a8c18b0bd81aafc9c8823f6bed35d8847)
Change-Id: I8e4703fdd4bfeb94f982e93abb7eb0cd71060fce
4 files changed