Merge "Allow non-updatable modules to contribute to @TestApi"

This commit is contained in:
Nikita Ioffe
2022-12-05 16:47:24 +00:00
committed by Gerrit Code Review
2 changed files with 34 additions and 5 deletions

View File

@@ -328,10 +328,12 @@ java_library {
java_library {
name: "android_test_stubs_current",
// Modules do not have test APIs, but we want to include their SystemApis, like we include
// the SystemApi of framework-non-updatable-sources.
static_libs: [
"all-modules-system-stubs",
// 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",
// Non-updatable modules on the other hand can have test APIs, so include their test-stubs.
"all-non-updatable-modules-test-stubs",
"android-non-updatable.stubs.test",
"private-stub-annotations-jar",
],

View File

@@ -36,6 +36,8 @@ var core_libraries_modules = []string{art, conscrypt, i18n}
// built against module_current SDK). Instead they are directly statically
// linked into the all-framework-module-lib, which is building against hidden
// APIs.
// In addition, the modules in this list are allowed to contribute to test APIs
// stubs.
var non_updatable_modules = []string{virtualization}
// The intention behind this soong plugin is to generate a number of "merged"
@@ -246,9 +248,33 @@ func createMergedPublicStubs(ctx android.LoadHookContext, modules []string) {
}
func createMergedSystemStubs(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")
props.Static_libs = transformArray(updatable_modules, "", ".stubs.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")
props.Static_libs = transformArray(non_updatable_modules, "", ".stubs.system")
props.Static_libs = append(props.Static_libs, "all-updatable-modules-system-stubs")
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-modules-system-stubs")
props.Static_libs = transformArray(modules, "", ".stubs.system")
props.Name = proptools.StringPtr("all-non-updatable-modules-test-stubs")
props.Static_libs = transformArray(non_updatable_modules, "", ".stubs.test")
props.Sdk_version = proptools.StringPtr("module_current")
props.Visibility = []string{"//frameworks/base"}
ctx.CreateModule(java.LibraryFactory, &props)
@@ -360,6 +386,7 @@ func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) {
createMergedPublicStubs(ctx, bootclasspath)
createMergedSystemStubs(ctx, bootclasspath)
createMergedTestStubsForNonUpdatableModules(ctx)
createMergedFrameworkModuleLibStubs(ctx, bootclasspath)
createMergedFrameworkImpl(ctx, bootclasspath)