Merge "Add support for excluding libraries from class loader contexts" am: e95d77b964
am: ab9e6fe18f
am: 7c89c48887
am: 10ccb6c274
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1971343 Change-Id: Ia03300d88199034f2cf07dbb9ca229e5e13ceb00
This commit is contained in:
@@ -267,11 +267,15 @@ var extractAssetsRule = pctx.AndroidStaticRule("extractAssets",
|
||||
})
|
||||
|
||||
func (a *aapt) buildActions(ctx android.ModuleContext, sdkContext android.SdkContext,
|
||||
classLoaderContexts dexpreopt.ClassLoaderContextMap, extraLinkFlags ...string) {
|
||||
classLoaderContexts dexpreopt.ClassLoaderContextMap, excludedLibs []string,
|
||||
extraLinkFlags ...string) {
|
||||
|
||||
transitiveStaticLibs, transitiveStaticLibManifests, staticRRODirs, assetPackages, libDeps, libFlags :=
|
||||
aaptLibs(ctx, sdkContext, classLoaderContexts)
|
||||
|
||||
// Exclude any libraries from the supplied list.
|
||||
classLoaderContexts = classLoaderContexts.ExcludeLibs(excludedLibs)
|
||||
|
||||
// App manifest file
|
||||
manifestFile := proptools.StringDefault(a.aaptProperties.Manifest, "AndroidManifest.xml")
|
||||
manifestSrcPath := android.PathForModuleSrc(ctx, manifestFile)
|
||||
@@ -530,7 +534,7 @@ func (a *AndroidLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
a.aapt.isLibrary = true
|
||||
a.classLoaderContexts = a.usesLibrary.classLoaderContextForUsesLibDeps(ctx)
|
||||
a.aapt.buildActions(ctx, android.SdkContext(a), a.classLoaderContexts)
|
||||
a.aapt.buildActions(ctx, android.SdkContext(a), a.classLoaderContexts, nil)
|
||||
|
||||
a.hideApexVariantFromMake = !ctx.Provider(android.ApexInfoProvider).(android.ApexInfo).IsForPlatform()
|
||||
|
||||
|
20
java/app.go
20
java/app.go
@@ -428,7 +428,8 @@ func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) {
|
||||
|
||||
a.aapt.splitNames = a.appProperties.Package_splits
|
||||
a.aapt.LoggingParent = String(a.overridableAppProperties.Logging_parent)
|
||||
a.aapt.buildActions(ctx, android.SdkContext(a), a.classLoaderContexts, aaptLinkFlags...)
|
||||
a.aapt.buildActions(ctx, android.SdkContext(a), a.classLoaderContexts,
|
||||
a.usesLibraryProperties.Exclude_uses_libs, aaptLinkFlags...)
|
||||
|
||||
// apps manifests are handled by aapt, don't let Module see them
|
||||
a.properties.Manifest = nil
|
||||
@@ -1217,6 +1218,23 @@ type UsesLibraryProperties struct {
|
||||
// libraries, because SDK ones are automatically picked up by Soong. The <uses-library> name
|
||||
// normally is the same as the module name, but there are exceptions.
|
||||
Provides_uses_lib *string
|
||||
|
||||
// A list of shared library names to exclude from the classpath of the APK. Adding a library here
|
||||
// will prevent it from being used when precompiling the APK and prevent it from being implicitly
|
||||
// added to the APK's manifest's <uses-library> elements.
|
||||
//
|
||||
// Care must be taken when using this as it could result in runtime errors if the APK actually
|
||||
// uses classes provided by the library and which are not provided in any other way.
|
||||
//
|
||||
// This is primarily intended for use by various CTS tests that check the runtime handling of the
|
||||
// android.test.base shared library (and related libraries) but which depend on some common
|
||||
// libraries that depend on the android.test.base library. Without this those tests will end up
|
||||
// with a <uses-library android:name="android.test.base"/> in their manifest which would either
|
||||
// render the tests worthless (as they would be testing the wrong behavior), or would break the
|
||||
// test altogether by providing access to classes that the tests were not expecting. Those tests
|
||||
// provide the android.test.base statically and use jarjar to rename them so they do not collide
|
||||
// with the classes provided by the android.test.base library.
|
||||
Exclude_uses_libs []string
|
||||
}
|
||||
|
||||
// usesLibrary provides properties and helper functions for AndroidApp and AndroidAppImport to verify that the
|
||||
|
@@ -142,7 +142,7 @@ func (r *RuntimeResourceOverlay) GenerateAndroidBuildActions(ctx android.ModuleC
|
||||
aaptLinkFlags = append(aaptLinkFlags,
|
||||
"--rename-overlay-target-package "+*r.overridableProperties.Target_package_name)
|
||||
}
|
||||
r.aapt.buildActions(ctx, r, nil, aaptLinkFlags...)
|
||||
r.aapt.buildActions(ctx, r, nil, nil, aaptLinkFlags...)
|
||||
|
||||
// Sign the built package
|
||||
_, certificates := collectAppDeps(ctx, r, false, false)
|
||||
|
Reference in New Issue
Block a user