Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 583bc717 authored by Jihoon Kang's avatar Jihoon Kang Committed by Gerrit Code Review
Browse files

Merge "Define exportable full api surface stubs" into main

parents 2452ea37 059b9493
Loading
Loading
Loading
Loading
+150 −6
Original line number Diff line number Diff line
@@ -239,6 +239,10 @@ java_defaults {
    name: "android-non-updatable_from_source_defaults",
    libs: ["stub-annotations"],
    static_libs: ["framework-res-package-jar"], // Export package of framework-res
}

java_defaults {
    name: "android-non-updatable_exportable_from_source_defaults",
    dist: {
        targets: ["sdk"],
        tag: ".jar",
@@ -264,6 +268,14 @@ java_library {
    },
}

java_library {
    name: "android-non-updatable.stubs.exportable",
    defaults: ["android-non-updatable_defaults"],
    static_libs: [
        "android-non-updatable.stubs.exportable.from-source",
    ],
}

java_library {
    name: "android-non-updatable.stubs.system",
    defaults: ["android-non-updatable_defaults"],
@@ -282,6 +294,14 @@ java_library {
    },
}

java_library {
    name: "android-non-updatable.stubs.exportable.system",
    defaults: ["android-non-updatable_defaults"],
    static_libs: [
        "android-non-updatable.stubs.exportable.system.from-source",
    ],
}

java_library {
    name: "android-non-updatable.stubs.module_lib",
    defaults: ["android-non-updatable_defaults"],
@@ -300,6 +320,14 @@ java_library {
    },
}

java_library {
    name: "android-non-updatable.stubs.exportable.module_lib",
    defaults: ["android-non-updatable_defaults"],
    static_libs: [
        "android-non-updatable.stubs.exportable.module_lib.from-source",
    ],
}

java_library {
    name: "android-non-updatable.stubs.test",
    defaults: ["android-non-updatable_defaults"],
@@ -318,6 +346,14 @@ java_library {
    },
}

java_library {
    name: "android-non-updatable.stubs.exportable.test",
    defaults: ["android-non-updatable_defaults"],
    static_libs: [
        "android-non-updatable.stubs.exportable.test.from-source",
    ],
}

java_library {
    name: "android-non-updatable.stubs.from-source",
    defaults: [
@@ -326,6 +362,17 @@ java_library {
    ],
    srcs: [":api-stubs-docs-non-updatable"],
    libs: ["all-modules-public-stubs"],
}

java_library {
    name: "android-non-updatable.stubs.exportable.from-source",
    defaults: [
        "android-non-updatable_defaults",
        "android-non-updatable_from_source_defaults",
        "android-non-updatable_exportable_from_source_defaults",
    ],
    srcs: [":api-stubs-docs-non-updatable{.exportable}"],
    libs: ["all-modules-public-stubs"],
    dist: {
        dir: "apistubs/android/public",
    },
@@ -339,6 +386,17 @@ java_library {
    ],
    srcs: [":system-api-stubs-docs-non-updatable"],
    libs: ["all-modules-system-stubs"],
}

java_library {
    name: "android-non-updatable.stubs.exportable.system.from-source",
    defaults: [
        "android-non-updatable_defaults",
        "android-non-updatable_from_source_defaults",
        "android-non-updatable_exportable_from_source_defaults",
    ],
    srcs: [":system-api-stubs-docs-non-updatable{.exportable}"],
    libs: ["all-modules-system-stubs"],
    dist: {
        dir: "apistubs/android/system",
    },
@@ -352,6 +410,17 @@ java_library {
    ],
    srcs: [":module-lib-api-stubs-docs-non-updatable"],
    libs: non_updatable_api_deps_on_modules,
}

java_library {
    name: "android-non-updatable.stubs.exportable.module_lib.from-source",
    defaults: [
        "android-non-updatable_defaults",
        "android-non-updatable_from_source_defaults",
        "android-non-updatable_exportable_from_source_defaults",
    ],
    srcs: [":module-lib-api-stubs-docs-non-updatable{.exportable}"],
    libs: non_updatable_api_deps_on_modules,
    dist: {
        dir: "apistubs/android/module-lib",
    },
@@ -365,6 +434,17 @@ java_library {
    ],
    srcs: [":test-api-stubs-docs-non-updatable"],
    libs: ["all-modules-system-stubs"],
}

java_library {
    name: "android-non-updatable.stubs.exportable.test.from-source",
    defaults: [
        "android-non-updatable_defaults",
        "android-non-updatable_from_source_defaults",
        "android-non-updatable_exportable_from_source_defaults",
    ],
    srcs: [":test-api-stubs-docs-non-updatable{.exportable}"],
    libs: ["all-modules-system-stubs"],
    dist: {
        dir: "apistubs/android/test",
    },
@@ -461,6 +541,16 @@ java_library {
    defaults: ["android.jar_defaults"],
}

java_library {
    name: "android_stubs_current_exportable.from-source",
    static_libs: [
        "all-modules-public-stubs-exportable",
        "android-non-updatable.stubs.exportable",
        "private-stub-annotations-jar",
    ],
    defaults: ["android.jar_defaults"],
}

java_library {
    name: "android_system_stubs_current.from-source",
    static_libs: [
@@ -468,6 +558,19 @@ java_library {
        "android-non-updatable.stubs.system",
        "private-stub-annotations-jar",
    ],
    defaults: [
        "android.jar_defaults",
    ],
    visibility: ["//frameworks/base/services"],
}

java_library {
    name: "android_system_stubs_current_exportable.from-source",
    static_libs: [
        "all-modules-system-stubs-exportable",
        "android-non-updatable.stubs.exportable.system",
        "private-stub-annotations-jar",
    ],
    defaults: [
        "android.jar_defaults",
        "android_stubs_dists_default",
@@ -496,6 +599,23 @@ java_library {
        "android-non-updatable.stubs.test",
        "private-stub-annotations-jar",
    ],
    defaults: [
        "android.jar_defaults",
    ],
    visibility: ["//frameworks/base/services"],
}

java_library {
    name: "android_test_stubs_current_exportable.from-source",
    static_libs: [
        // Updatable modules do not have test APIs, but we want to include their SystemApis, like we
        // include the SystemApi of framework-non-updatable-sources.
        "all-updatable-modules-system-stubs-exportable",
        // Non-updatable modules on the other hand can have test APIs, so include their test-stubs.
        "all-non-updatable-modules-test-stubs-exportable",
        "android-non-updatable.stubs.exportable.test",
        "private-stub-annotations-jar",
    ],
    defaults: [
        "android.jar_defaults",
        "android_stubs_dists_default",
@@ -505,6 +625,7 @@ java_library {
    },
}

// This module does not need to be copied to dist
java_library {
    name: "android_test_frameworks_core_stubs_current.from-source",
    static_libs: [
@@ -513,24 +634,34 @@ java_library {
    ],
    defaults: [
        "android.jar_defaults",
        "android_stubs_dists_default",
    ],
    dist: {
        dir: "apistubs/android/test-core",
    },
    visibility: ["//frameworks/base/services"],
}

java_library {
    name: "android_module_lib_stubs_current.from-source",
    defaults: [
        "android.jar_defaults",
        "android_stubs_dists_default",
    ],
    static_libs: [
        "android-non-updatable.stubs.module_lib",
        "art.module.public.api.stubs.module_lib",
        "i18n.module.public.api.stubs",
    ],
    visibility: ["//frameworks/base/services"],
}

java_library {
    name: "android_module_lib_stubs_current_exportable.from-source",
    defaults: [
        "android.jar_defaults",
        "android_stubs_dists_default",
    ],
    static_libs: [
        "android-non-updatable.stubs.exportable.module_lib",
        "art.module.public.api.stubs.exportable.module_lib",
        "i18n.module.public.api.stubs.exportable",
    ],
    dist: {
        dir: "apistubs/android/module-lib",
    },
@@ -540,13 +671,26 @@ java_library {
    name: "android_system_server_stubs_current.from-source",
    defaults: [
        "android.jar_defaults",
        "android_stubs_dists_default",
    ],
    srcs: [":services-non-updatable-stubs"],
    installable: false,
    static_libs: [
        "android_module_lib_stubs_current.from-source",
    ],
    visibility: ["//frameworks/base/services"],
}

java_library {
    name: "android_system_server_stubs_current_exportable.from-source",
    defaults: [
        "android.jar_defaults",
        "android_stubs_dists_default",
    ],
    srcs: [":services-non-updatable-stubs{.exportable}"],
    installable: false,
    static_libs: [
        "android_module_lib_stubs_current_exportable.from-source",
    ],
    dist: {
        dir: "apistubs/android/system-server",
    },
+83 −0
Original line number Diff line number Diff line
@@ -205,6 +205,15 @@ func createMergedPublicStubs(ctx android.LoadHookContext, modules []string) {
	ctx.CreateModule(java.LibraryFactory, &props)
}

func createMergedPublicExportableStubs(ctx android.LoadHookContext, modules []string) {
	props := libraryProps{}
	props.Name = proptools.StringPtr("all-modules-public-stubs-exportable")
	props.Static_libs = transformArray(modules, "", ".stubs.exportable")
	props.Sdk_version = proptools.StringPtr("module_current")
	props.Visibility = []string{"//frameworks/base"}
	ctx.CreateModule(java.LibraryFactory, &props)
}

func createMergedSystemStubs(ctx android.LoadHookContext, modules []string) {
	// First create the all-updatable-modules-system-stubs
	{
@@ -229,6 +238,30 @@ func createMergedSystemStubs(ctx android.LoadHookContext, modules []string) {
	}
}

func createMergedSystemExportableStubs(ctx android.LoadHookContext, modules []string) {
	// First create the all-updatable-modules-system-stubs
	{
		updatable_modules := removeAll(modules, non_updatable_modules)
		props := libraryProps{}
		props.Name = proptools.StringPtr("all-updatable-modules-system-stubs-exportable")
		props.Static_libs = transformArray(updatable_modules, "", ".stubs.exportable.system")
		props.Sdk_version = proptools.StringPtr("module_current")
		props.Visibility = []string{"//frameworks/base"}
		ctx.CreateModule(java.LibraryFactory, &props)
	}
	// Now merge all-updatable-modules-system-stubs and stubs from non-updatable modules
	// into all-modules-system-stubs.
	{
		props := libraryProps{}
		props.Name = proptools.StringPtr("all-modules-system-stubs-exportable")
		props.Static_libs = transformArray(non_updatable_modules, "", ".stubs.exportable.system")
		props.Static_libs = append(props.Static_libs, "all-updatable-modules-system-stubs-exportable")
		props.Sdk_version = proptools.StringPtr("module_current")
		props.Visibility = []string{"//frameworks/base"}
		ctx.CreateModule(java.LibraryFactory, &props)
	}
}

func createMergedTestStubsForNonUpdatableModules(ctx android.LoadHookContext) {
	props := libraryProps{}
	props.Name = proptools.StringPtr("all-non-updatable-modules-test-stubs")
@@ -238,6 +271,15 @@ func createMergedTestStubsForNonUpdatableModules(ctx android.LoadHookContext) {
	ctx.CreateModule(java.LibraryFactory, &props)
}

func createMergedTestExportableStubsForNonUpdatableModules(ctx android.LoadHookContext) {
	props := libraryProps{}
	props.Name = proptools.StringPtr("all-non-updatable-modules-test-stubs-exportable")
	props.Static_libs = transformArray(non_updatable_modules, "", ".stubs.exportable.test")
	props.Sdk_version = proptools.StringPtr("module_current")
	props.Visibility = []string{"//frameworks/base"}
	ctx.CreateModule(java.LibraryFactory, &props)
}

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)
@@ -268,6 +310,19 @@ func createMergedFrameworkImpl(ctx android.LoadHookContext, modules []string) {
	}
}

func createMergedFrameworkModuleLibExportableStubs(ctx android.LoadHookContext, modules []string) {
	// The user of this module compiles against the "core" SDK and against non-updatable modules,
	// so remove to avoid dupes.
	modules = removeAll(modules, core_libraries_modules)
	modules = removeAll(modules, non_updatable_modules)
	props := libraryProps{}
	props.Name = proptools.StringPtr("framework-updatable-stubs-module_libs_api-exportable")
	props.Static_libs = transformArray(modules, "", ".stubs.exportable.module_lib")
	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 and against non-updatable modules,
	// so remove to avoid dupes.
@@ -383,6 +438,27 @@ func createFullApiLibraries(ctx android.LoadHookContext) {
	}
}

func createFullExportableApiLibraries(ctx android.LoadHookContext) {
	javaLibraryNames := []string{
		"android_stubs_current_exportable",
		"android_system_stubs_current_exportable",
		"android_test_stubs_current_exportable",
		"android_module_lib_stubs_current_exportable",
		"android_system_server_stubs_current_exportable",
	}

	for _, libraryName := range javaLibraryNames {
		props := libraryProps{}
		props.Name = proptools.StringPtr(libraryName)
		staticLib := libraryName + ".from-source"
		props.Static_libs = []string{staticLib}
		props.Defaults = []string{"android.jar_defaults"}
		props.Visibility = []string{"//visibility:public"}

		ctx.CreateModule(java.LibraryFactory, &props)
	}
}

func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) {
	bootclasspath := a.properties.Bootclasspath
	system_server_classpath := a.properties.System_server_classpath
@@ -398,6 +474,11 @@ func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) {
	createMergedFrameworkModuleLibStubs(ctx, bootclasspath)
	createMergedFrameworkImpl(ctx, bootclasspath)

	createMergedPublicExportableStubs(ctx, bootclasspath)
	createMergedSystemExportableStubs(ctx, bootclasspath)
	createMergedTestExportableStubsForNonUpdatableModules(ctx)
	createMergedFrameworkModuleLibExportableStubs(ctx, bootclasspath)

	createMergedAnnotationsFilegroups(ctx, bootclasspath, system_server_classpath)

	createPublicStubsSourceFilegroup(ctx, bootclasspath)
@@ -405,6 +486,8 @@ func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) {
	createApiContributionDefaults(ctx, bootclasspath)

	createFullApiLibraries(ctx)

	createFullExportableApiLibraries(ctx)
}

func combinedApisModuleFactory() android.Module {