Rework class loader context implementation.
The old representation consisted of a list of libraries (UsesLibraries), a list of optional libraries (OptionalUsesLibraries) and a mapping from library name to its build/install paths (LibraryPaths). The separation into lists and map was necessary because of special handling of compatibility libraries, which is now unified with normal libraries. The new representation is a mapping from target SDK version to a tree structure ClassLoaderContext. Each node of the tree represents a library and contains library name, build/install paths and a slice of subcontexts for dependencies. The same library may occur in the tree multiple times in case it is a dependency of multiple libraries. The order in which libraries are added matters (the resulting tree shape may be different). Test results have to be updated, as the resulting <uses-library> list is reodered (previously it was a sorted list of map keys, and now it is formed by a depth-first preorder traversal of the class loader tree). Test: lunch aosp_cf_x86_phone-userdebug && m Bug: 132357300 Bug: 168686456 Change-Id: I11be8cd2967f004fd58753d7c5fb99fed179cd63
This commit is contained in:
@@ -33,11 +33,9 @@ type dexpreopter struct {
|
||||
isTest bool
|
||||
isPresignedPrebuilt bool
|
||||
|
||||
manifestFile android.Path
|
||||
usesLibs []string
|
||||
optionalUsesLibs []string
|
||||
enforceUsesLibs bool
|
||||
libraryPaths dexpreopt.LibraryPaths
|
||||
manifestFile android.Path
|
||||
enforceUsesLibs bool
|
||||
classLoaderContexts dexpreopt.ClassLoaderContextMap
|
||||
|
||||
builtInstalled string
|
||||
}
|
||||
@@ -193,10 +191,8 @@ func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.Mo
|
||||
ProfileIsTextListing: profileIsTextListing,
|
||||
ProfileBootListing: profileBootListing,
|
||||
|
||||
EnforceUsesLibraries: d.enforceUsesLibs,
|
||||
OptionalUsesLibraries: d.optionalUsesLibs,
|
||||
UsesLibraries: d.usesLibs,
|
||||
LibraryPaths: d.libraryPaths,
|
||||
EnforceUsesLibraries: d.enforceUsesLibs,
|
||||
ClassLoaderContexts: d.classLoaderContexts,
|
||||
|
||||
Archs: archs,
|
||||
DexPreoptImages: images,
|
||||
|
||||
Reference in New Issue
Block a user