summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Duffin <paulduffin@google.com>2024-05-02 14:51:41 +0100
committerPaul Duffin <paulduffin@google.com>2024-05-03 08:46:45 +0100
commitfb5e07d4d2fa7ce2d442290a820ff7b68e28aeb8 (patch)
tree32c6f4f49c632db61444b156567385cfbdaa32f9
parentca3da5d19c2bf7529b289b3e1da3ed45a7db657e (diff)
downloadbase-fb5e07d4d2fa7ce2d442290a820ff7b68e28aeb8.tar.gz
Build complete api-versions.xml files for module-lib/system-server
Previously, APIs from updatable modules and information about the SDK extensions was only included in `api_versions_public` and `api_versions_system`. This change adds the following two modules: * `api_versions_module_lib_complete` * `api_versions_system_server_complete` It did not change `api_versions_module_lib` or `api_versions_system_server` because Android Lint requires that they do not include information about APIs from updatable modules because otherwise it will report calls within a module as it has no way to determine whether a call crosses an API boundary or not. Bug: 336993217 Test: TARGETS=$(for i in public system module-lib module-lib-complete system-server-complete; do U=$(echo $i | sed "s|-|_|g"); echo "out/target/common/obj/PACKAGING/api_versions_${U}_generated-api-versions.xml"; done) m $TARGETS; mkdir -p before; cp $TARGETS before m $TARGETS; mkdir -p after; cp $TARGETS after meld before after # Review differences. Change-Id: Ia542fbdc517fb223a0488f0e3f81b8727cb204e4
-rw-r--r--api/StubLibraries.bp56
-rw-r--r--api/api.go21
2 files changed, 77 insertions, 0 deletions
diff --git a/api/StubLibraries.bp b/api/StubLibraries.bp
index 525c208b14a6..f2c39be28bcf 100644
--- a/api/StubLibraries.bp
+++ b/api/StubLibraries.bp
@@ -1214,6 +1214,32 @@ droidstubs {
api_levels_sdk_type: "module-lib",
}
+// Create a single jar containing the whole module-lib API surface.
+// This is needed because Metalava only consumes the first jar file it is given
+// and ignores the rest.
+java_library {
+ name: "android_module_stubs_complete_current_with_test_libs",
+ static_libs: [
+ "android_module_stubs_current_with_test_libs",
+ "framework-updatable-stubs-module_libs_api-exportable",
+ ],
+ defaults: ["android.jar_defaults"],
+ visibility: [
+ "//visibility:override",
+ "//visibility:private",
+ ],
+}
+
+// Produces an `api-versions.xml` file that includes up-to-date information
+// about all the module-lib APIs, both updatable and non-updatable and historic
+// information about all previous dessert and SDK extension releases.
+droidstubs {
+ name: "api_versions_module_lib_complete",
+ defaults: ["api_versions_complete_defaults"],
+ srcs: [":android_module_stubs_complete_current_with_test_libs{.jar}"],
+ api_levels_sdk_type: "module-lib",
+}
+
// Produces an `api-versions.xml` file that includes up-to-date information
// about only the non-updatable system-server APIs and historic information
// about all previous dessert and SDK extension releases. That historic
@@ -1226,6 +1252,36 @@ droidstubs {
api_levels_sdk_type: "system-server",
}
+// Create a single jar containing the whole system-server API surface.
+// This is needed because Metalava only consumes the first jar file it is given
+// and ignores the rest.
+java_library {
+ name: "android_system_server_stubs_complete_current_with_test_libs",
+ static_libs: [
+ "android_system_server_stubs_current_with_test_libs",
+ // system-server extends module-lib but libraries which only service-*
+ // libraries provided system-server APIs, so include module-lib APIs for
+ // the others, e.g. framework-* libraries.
+ "framework-updatable-stubs-module_libs_api-exportable",
+ "framework-updatable-stubs-system_server_api-exportable",
+ ],
+ defaults: ["android.jar_defaults"],
+ visibility: [
+ "//visibility:override",
+ "//visibility:private",
+ ],
+}
+
+// Produces an `api-versions.xml` file that includes up-to-date information
+// about all the system-server APIs, both updatable and non-updatable and
+// historic information about all previous dessert and SDK extension releases.
+droidstubs {
+ name: "api_versions_system_server_complete",
+ defaults: ["api_versions_complete_defaults"],
+ srcs: [":android_system_server_stubs_complete_current_with_test_libs{.jar}"],
+ api_levels_sdk_type: "system-server",
+}
+
/////////////////////////////////////////////////////////////////////
// hwbinder.stubs provides APIs required for building HIDL Java
// libraries.
diff --git a/api/api.go b/api/api.go
index b31a26c90789..449fac63f90c 100644
--- a/api/api.go
+++ b/api/api.go
@@ -386,6 +386,26 @@ func createMergedFrameworkModuleLibStubs(ctx android.LoadHookContext, modules []
ctx.CreateModule(java.LibraryFactory, &props)
}
+func createMergedFrameworkSystemServerExportableStubs(ctx android.LoadHookContext, bootclasspath, system_server_classpath []string) {
+ // The user of this module compiles against the "core" SDK and against non-updatable bootclasspathModules,
+ // so remove to avoid dupes.
+ bootclasspathModules := removeAll(bootclasspath, core_libraries_modules)
+ bootclasspathModules = removeAll(bootclasspath, non_updatable_modules)
+ modules := append(
+ // Include all the module-lib APIs from the bootclasspath libraries.
+ transformArray(bootclasspathModules, "", ".stubs.exportable.module_lib"),
+ // Then add all the system-server APIs from the service-* libraries.
+ transformArray(system_server_classpath, "", ".stubs.exportable.system_server")...,
+ )
+ props := libraryProps{}
+ props.Name = proptools.StringPtr("framework-updatable-stubs-system_server_api-exportable")
+ props.Static_libs = modules
+ props.Sdk_version = proptools.StringPtr("system_server_current")
+ props.Visibility = []string{"//frameworks/base"}
+ props.Is_stubs_module = proptools.BoolPtr(true)
+ ctx.CreateModule(java.LibraryFactory, &props)
+}
+
func createPublicStubsSourceFilegroup(ctx android.LoadHookContext, modules []string) {
props := fgProps{}
props.Name = proptools.StringPtr("all-modules-public-stubs-source")
@@ -531,6 +551,7 @@ func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) {
createMergedSystemExportableStubs(ctx, bootclasspath)
createMergedTestExportableStubsForNonUpdatableModules(ctx)
createMergedFrameworkModuleLibExportableStubs(ctx, bootclasspath)
+ createMergedFrameworkSystemServerExportableStubs(ctx, bootclasspath, system_server_classpath)
createMergedAnnotationsFilegroups(ctx, bootclasspath, system_server_classpath)