Port uses-shared library verification and dexpreopting to Soong

Ports 09f3b97f4b488cd3a7b7d72038b173575b02c162 (Add support for
preopt with uses-libraries) from Make to Soong to support verifying
and preopting shared libraries.

This reapplies Id25f55f07a55120bebe2a9b32c094209efc85c8b with fixes
for unbundled builds and builds with ALLOW_MISSING_DEPENDENCIES=true
set.

Bug: 132357300
Test: app_test.go
Test: m checkbuild
Change-Id: I964309a68ec4ed081f3f3154879c71048ecb5455
This commit is contained in:
Colin Cross
2019-05-16 12:28:22 -07:00
parent 7d06395f0c
commit 50ddcc4b69
12 changed files with 308 additions and 32 deletions

View File

@@ -29,6 +29,12 @@ type dexpreopter struct {
isInstallable bool
isPresignedPrebuilt bool
manifestFile android.Path
usesLibs []string
optionalUsesLibs []string
enforceUsesLibs bool
libraryPaths map[string]android.Path
builtInstalled string
}
@@ -154,6 +160,7 @@ func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.Mo
DexLocation: dexLocation,
BuildPath: android.PathForModuleOut(ctx, "dexpreopt", ctx.ModuleName()+".jar").OutputPath,
DexPath: dexJarFile,
ManifestPath: d.manifestFile,
UncompressedDex: d.uncompressedDex,
HasApkLibraries: false,
PreoptFlags: nil,
@@ -161,10 +168,10 @@ func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.Mo
ProfileClassListing: profileClassListing,
ProfileIsTextListing: profileIsTextListing,
EnforceUsesLibraries: false,
OptionalUsesLibraries: nil,
UsesLibraries: nil,
LibraryPaths: nil,
EnforceUsesLibraries: d.enforceUsesLibs,
PresentOptionalUsesLibraries: d.optionalUsesLibs,
UsesLibraries: d.usesLibs,
LibraryPaths: d.libraryPaths,
Archs: archs,
DexPreoptImages: images,