From bd133b1bdc1de378992491c3154a9ec0b347f7c3 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Wed, 20 May 2020 09:06:00 +0900 Subject: [PATCH] apex: Make android_library support APEX variants The android_library module type can be used within an android_app that can itself be added to an apex but android_library does not call android.InitApexModule(module) and so it does not support apex variants and so is treated as if it cannot be part of an APEX even though it actually is. Now, android_library supports AEPX variants. Due to this change, the whilelist for apex_available got bigger. Exempt-From-Owner-Approval: Got approval in rvc-dev. Bug: 156978407 Test: m Change-Id: I3a21d653fe9c4159e3a89791fe1a8597865eeae6 --- apex/apex.go | 60 ++++++++++++++++++++++++++++++++++++++--------- java/aar.go | 10 ++++++++ java/androidmk.go | 10 ++++++++ 3 files changed, 69 insertions(+), 11 deletions(-) diff --git a/apex/apex.go b/apex/apex.go index c2e2e8bea..6dcbde46c 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -251,6 +251,18 @@ func makeApexAvailableWhitelist() map[string][]string { // // Module separator // + m["com.android.extservices"] = []string{ + "error_prone_annotations", + "ExtServices-core", + "ExtServices", + "libtextclassifier-java", + "textclassifier-statsd", + "TextClassifierNotificationLibNoManifest", + "TextClassifierServiceLibNoManifest", + } + // + // Module separator + // m["com.android.neuralnetworks"] = []string{ "android.hardware.neuralnetworks@1.0", "android.hardware.neuralnetworks@1.1", @@ -294,7 +306,10 @@ func makeApexAvailableWhitelist() map[string][]string { "android.hidl.token@1.0", "android.hidl.token@1.0-utils", "bionic_libc_platform_headers", + "exoplayer2-extractor", + "exoplayer2-extractor-annotation-stubs", "gl_headers", + "jsr305", "libEGL", "libEGL_blobCache", "libEGL_getProcAddress", @@ -551,12 +566,8 @@ func makeApexAvailableWhitelist() map[string][]string { // Module separator // m["com.android.permission"] = []string{ - "androidx.annotation_annotation", - "androidx.annotation_annotation-nodeps", - "androidx.lifecycle_lifecycle-common", - "androidx.lifecycle_lifecycle-common-java8", - "androidx.lifecycle_lifecycle-common-java8-nodeps", - "androidx.lifecycle_lifecycle-common-nodeps", + "car-ui-lib", + "iconloader", "kotlin-annotations", "kotlin-stdlib", "kotlin-stdlib-jdk7", @@ -568,6 +579,15 @@ func makeApexAvailableWhitelist() map[string][]string { "permissioncontroller-statsd", "GooglePermissionController", "PermissionController", + "SettingsLibActionBarShadow", + "SettingsLibAppPreference", + "SettingsLibBarChartPreference", + "SettingsLibLayoutPreference", + "SettingsLibProgressBar", + "SettingsLibSearchWidget", + "SettingsLibSettingsTheme", + "SettingsLibRestrictedLockUtils", + "SettingsLibHelpUtils", } // // Module separator @@ -629,13 +649,21 @@ func makeApexAvailableWhitelist() map[string][]string { // Module separator // m["com.android.tethering"] = []string{ - "libnativehelper_compat_libc++", - "android.hardware.tetheroffload.config@1.0", + "android.hardware.tetheroffload.config-V1.0-java", + "android.hardware.tetheroffload.control-V1.0-java", + "android.hidl.base-V1.0-java", + "ipmemorystore-aidl-interfaces-java", "libcgrouprc", "libcgrouprc_format", + "libnativehelper_compat_libc++", "libtetherutilsjni", "libvndksupport", + "net-utils-framework-common", + "netd_aidl_interface-V3-java", + "netlink-client", + "networkstack-aidl-interfaces-java", "tethering-aidl-interfaces-java", + "TetheringApiCurrentLib", } // // Module separator @@ -659,8 +687,6 @@ func makeApexAvailableWhitelist() map[string][]string { "android.hidl.manager-V1.0-java", "android.hidl.manager-V1.1-java", "android.hidl.manager-V1.2-java", - "androidx.annotation_annotation", - "androidx.annotation_annotation-nodeps", "bouncycastle-unbundled", "dnsresolver_aidl_interface-V2-java", "error_prone_annotations", @@ -682,7 +708,6 @@ func makeApexAvailableWhitelist() map[string][]string { "wifi-nano-protos", "wifi-service-pre-jarjar", "wifi-service-resources", - "prebuilt_androidx.annotation_annotation-nodeps", } // // Module separator @@ -702,6 +727,15 @@ func makeApexAvailableWhitelist() map[string][]string { // Module separator // m[android.AvailableToAnyApex] = []string{ + // TODO(b/156996905) Set apex_available/min_sdk_version for androidx/extras support libraries + "androidx", + "androidx-constraintlayout_constraintlayout", + "androidx-constraintlayout_constraintlayout-nodeps", + "androidx-constraintlayout_constraintlayout-solver", + "androidx-constraintlayout_constraintlayout-solver-nodeps", + "com.google.android.material_material", + "com.google.android.material_material-nodeps", + "libatomic", "libclang_rt", "libgcc_stripped", @@ -2295,6 +2329,10 @@ func normalizeModuleName(moduleName string) string { // We don't want to list them all moduleName = "libclang_rt" } + if strings.HasPrefix(moduleName, "androidx.") { + // TODO(b/156996905) Set apex_available/min_sdk_version for androidx support libraries + moduleName = "androidx" + } return moduleName } diff --git a/java/aar.go b/java/aar.go index 6e3b9e6d3..0e103f248 100644 --- a/java/aar.go +++ b/java/aar.go @@ -513,6 +513,7 @@ func AndroidLibraryFactory() android.Module { module.androidLibraryProperties.BuildAAR = true + android.InitApexModule(module) InitJavaModule(module, android.DeviceSupported) return module } @@ -537,8 +538,12 @@ type AARImportProperties struct { type AARImport struct { android.ModuleBase android.DefaultableModuleBase + android.ApexModuleBase prebuilt android.Prebuilt + // Functionality common to Module and Import. + embeddableInModuleAndImport + properties AARImportProperties classpathFile android.WritablePath @@ -742,6 +747,10 @@ func (a *AARImport) SrcJarArgs() ([]string, android.Paths) { return nil, nil } +func (a *AARImport) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool { + return a.depIsInSameApex(ctx, dep) +} + var _ android.PrebuiltInterface = (*Import)(nil) // android_library_import imports an `.aar` file into the build graph as if it was built with android_library. @@ -754,6 +763,7 @@ func AARImportFactory() android.Module { module.AddProperties(&module.properties) android.InitPrebuiltModule(module, &module.properties.Aars) + android.InitApexModule(module) InitJavaModule(module, android.DeviceSupported) return module } diff --git a/java/androidmk.go b/java/androidmk.go index ba1af0d77..6747b30b0 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -211,6 +211,11 @@ func (prebuilt *DexImport) AndroidMkEntries() []android.AndroidMkEntries { } func (prebuilt *AARImport) AndroidMkEntries() []android.AndroidMkEntries { + if !prebuilt.IsForPlatform() { + return []android.AndroidMkEntries{{ + Disabled: true, + }} + } return []android.AndroidMkEntries{android.AndroidMkEntries{ Class: "JAVA_LIBRARIES", OutputFile: android.OptionalPathForPath(prebuilt.classpathFile), @@ -416,6 +421,11 @@ func (a *AndroidTestHelperApp) AndroidMkEntries() []android.AndroidMkEntries { } func (a *AndroidLibrary) AndroidMkEntries() []android.AndroidMkEntries { + if !a.IsForPlatform() { + return []android.AndroidMkEntries{{ + Disabled: true, + }} + } entriesList := a.Library.AndroidMkEntries() entries := &entriesList[0]