Unify handling of compat and normal libs in class loader contexts.
Also, add tests for compatibility libraries in class loader context. This CL separates special-case handling of compatibility libraries into a "fixup" step that is done after class loader context is constructed by Soong. This allows to handle compatibility libraries and normal libraries uniformly, which should enable further simplification of class loader context representation (in subsequent CLs). Currently the only "fixup" step is removal of libraries from conditional class loader context if they already are in unconditional context. This check cannot be done at the time when the libraries are added to conditional context, because the full uncoditional context is not yet known at that time. Previously construction of unconditional context was delayed, now it is no longer delayed and handled in the same way as unconditional context, and the "fixup" does the filtering. Test: lunch aosp_cf_x86_phone-userdebug && m Bug: 132357300 Change-Id: Ie71e9fb2d3d529b5317cd84e09ab3c853017c349
This commit is contained in:
@@ -100,20 +100,30 @@ type GlobalSoongConfig struct {
|
||||
ConstructContext android.Path
|
||||
}
|
||||
|
||||
// These libs are added as optional dependencies (<uses-library> with android:required set to false).
|
||||
// This is because they haven't existed prior to certain SDK version, but classes in them were in
|
||||
// bootclasspath jars, etc. So making them hard dependencies (android:required=true) would prevent
|
||||
// apps from being installed to such legacy devices.
|
||||
var OptionalCompatUsesLibs = []string{
|
||||
"org.apache.http.legacy",
|
||||
"android.test.base",
|
||||
"android.test.mock",
|
||||
}
|
||||
// These libs are added as <uses-library> dependencies for apps if the targetSdkVersion in the
|
||||
// app manifest is less than the specified version. This is needed because these libraries haven't
|
||||
// existed prior to certain SDK version, but classes in them were in bootclasspath jars, etc.
|
||||
// Some of the compatibility libraries are optional (their <uses-library> tag has "required=false"),
|
||||
// so that if this library is missing this in not a build or run-time error.
|
||||
var OrgApacheHttpLegacy = "org.apache.http.legacy"
|
||||
var AndroidTestBase = "android.test.base"
|
||||
var AndroidTestMock = "android.test.mock"
|
||||
var AndroidHidlBase = "android.hidl.base-V1.0-java"
|
||||
var AndroidHidlManager = "android.hidl.manager-V1.0-java"
|
||||
|
||||
var CompatUsesLibs = []string{
|
||||
"android.hidl.base-V1.0-java",
|
||||
"android.hidl.manager-V1.0-java",
|
||||
var OptionalCompatUsesLibs28 = []string{
|
||||
OrgApacheHttpLegacy,
|
||||
}
|
||||
var OptionalCompatUsesLibs30 = []string{
|
||||
AndroidTestBase,
|
||||
AndroidTestMock,
|
||||
}
|
||||
var CompatUsesLibs29 = []string{
|
||||
AndroidHidlBase,
|
||||
AndroidHidlManager,
|
||||
}
|
||||
var OptionalCompatUsesLibs = append(android.CopyOf(OptionalCompatUsesLibs28), OptionalCompatUsesLibs30...)
|
||||
var CompatUsesLibs = android.CopyOf(CompatUsesLibs29)
|
||||
|
||||
const UnknownInstallLibraryPath = "error"
|
||||
|
||||
|
Reference in New Issue
Block a user