Auto-generate list of module impl jars

Eliminate another duplicated list of all modules. This one has a couple
of workarounds due to different naming of impl libs, and bluetooth not
being ready.

Bug: 169103987
Test: m framework-all and diff intermediates (no diffs)
Merged-In: Ia8627c6e3977cd271e389ec482388ff73661881d
Change-Id: Ia8627c6e3977cd271e389ec482388ff73661881d
This commit is contained in:
Anton Hansson 2022-01-28 11:31:50 +00:00
parent c9a39b3066
commit 95e89a8cb9
3 changed files with 26 additions and 18 deletions

View File

@ -140,21 +140,8 @@ java_library {
name: "framework-all",
installable: false,
static_libs: [
"android.net.ipsec.ike.impl",
"all-framework-module-impl",
"framework-minus-apex",
"framework-appsearch.impl",
"framework-connectivity.impl",
"framework-connectivity-tiramisu.impl",
"framework-graphics.impl",
"framework-mediaprovider.impl",
"framework-permission.impl",
"framework-permission-s.impl",
"framework-scheduling.impl",
"framework-sdkextensions.impl",
"framework-statsd.impl",
"framework-tethering.impl",
"framework-wifi.impl",
"updatable-media",
],
apex_available: ["//apex_available:platform"],
sdk_version: "core_platform",

View File

@ -63,8 +63,8 @@ java_library {
min_sdk_version: "29",
visibility: [
"//frameworks/av/apex:__subpackages__",
"//frameworks/base", // For framework-all
"//frameworks/base/apex/media/service",
"//frameworks/base/api", // For framework-all
],
}

View File

@ -27,6 +27,7 @@ import (
const art = "art.module.public.api"
const conscrypt = "conscrypt.module.public.api"
const i18n = "i18n.module.public.api"
var core_libraries_modules = []string{art, conscrypt, i18n}
// The intention behind this soong plugin is to generate a number of "merged"
// API-related modules that would otherwise require a large amount of very
@ -199,9 +200,28 @@ func createMergedSystemStubs(ctx android.LoadHookContext, modules []string) {
ctx.CreateModule(java.LibraryFactory, &props)
}
func createMergedModuleLibStubs(ctx android.LoadHookContext, modules []string) {
func createMergedFrameworkImpl(ctx android.LoadHookContext, modules []string) {
// This module is for the "framework-all" module, which should not include the core libraries.
modules = removeAll(modules, core_libraries_modules)
// TODO(b/214988855): remove the line below when framework-bluetooth has an impl jar.
modules = remove(modules, "framework-bluetooth")
props := libraryProps{}
props.Name = proptools.StringPtr("all-framework-module-impl")
props.Static_libs = transformArray(modules, "", ".impl")
// Media module's impl jar is called "updatable-media"
for i, v := range props.Static_libs {
if v == "framework-media.impl" {
props.Static_libs[i] = "updatable-media"
}
}
props.Sdk_version = proptools.StringPtr("module_current")
props.Visibility = []string{"//frameworks/base"}
ctx.CreateModule(java.LibraryFactory, &props)
}
func createMergedFrameworkModuleLibStubs(ctx android.LoadHookContext, modules []string) {
// The user of this module compiles against the "core" SDK, so remove core libraries to avoid dupes.
modules = removeAll(modules, []string{art, conscrypt, i18n})
modules = removeAll(modules, core_libraries_modules)
props := libraryProps{}
props.Name = proptools.StringPtr("framework-updatable-stubs-module_libs_api")
props.Static_libs = transformArray(modules, "", ".stubs.module_lib")
@ -269,7 +289,8 @@ func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) {
createMergedPublicStubs(ctx, bootclasspath)
createMergedSystemStubs(ctx, bootclasspath)
createMergedModuleLibStubs(ctx, bootclasspath)
createMergedFrameworkModuleLibStubs(ctx, bootclasspath)
createMergedFrameworkImpl(ctx, bootclasspath)
createMergedAnnotations(ctx, bootclasspath)