summaryrefslogtreecommitdiff
path: root/java/app.go
diff options
context:
space:
mode:
author Paul Duffin <paulduffin@google.com> 2022-02-07 18:39:48 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-02-07 18:39:48 +0000
commit3ed2d0e53cf1864ef56aa7fa8521f39ffb234bd5 (patch)
tree614f7b642175c729cfa4ee5b56761dd8ddcc505f /java/app.go
parent1f1ad1f67d485bf5ef3e302141cd9025ca22c97c (diff)
parent10ccb6c2744002d54f85d3ce9120543f300a969a (diff)
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
Diffstat (limited to 'java/app.go')
-rwxr-xr-xjava/app.go20
1 files changed, 19 insertions, 1 deletions
diff --git a/java/app.go b/java/app.go
index 7c777e165..d0526b988 100755
--- a/java/app.go
+++ b/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