diff options
author | 2022-02-07 18:39:48 +0000 | |
---|---|---|
committer | 2022-02-07 18:39:48 +0000 | |
commit | 3ed2d0e53cf1864ef56aa7fa8521f39ffb234bd5 (patch) | |
tree | 614f7b642175c729cfa4ee5b56761dd8ddcc505f /java/app.go | |
parent | 1f1ad1f67d485bf5ef3e302141cd9025ca22c97c (diff) | |
parent | 10ccb6c2744002d54f85d3ce9120543f300a969a (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-x | java/app.go | 20 |
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 |