diff options
| author | 2024-01-12 23:50:37 +0000 | |
|---|---|---|
| committer | 2024-01-12 23:50:37 +0000 | |
| commit | 7e9343b889d72890f1dfa375529710defc577388 (patch) | |
| tree | 3b1fee5c1f356b894a73e9145e94aef15aed0156 /java | |
| parent | 404fb4e40b28893eea07c88e9cea6076003eb92b (diff) | |
| parent | f55a5f7b3732b79ad28a0ad7403fda5938e75db6 (diff) | |
Merge changes from topic "hiddenapi_exportable" into main
* changes:
Copy exportable artifacts to module sdk snapshot
Enable hiddenapi check for exportable stubs
Add defaults support for bootclasspath_fragment module type
Diffstat (limited to 'java')
| -rw-r--r-- | java/bootclasspath_fragment.go | 7 | ||||
| -rw-r--r-- | java/bootclasspath_fragment_test.go | 11 | ||||
| -rw-r--r-- | java/core-libraries/Android.bp | 53 | ||||
| -rw-r--r-- | java/droidstubs.go | 12 | ||||
| -rw-r--r-- | java/hiddenapi_modular.go | 25 | ||||
| -rw-r--r-- | java/hiddenapi_singleton_test.go | 13 | ||||
| -rw-r--r-- | java/java.go | 2 | ||||
| -rw-r--r-- | java/sdk_library.go | 103 | ||||
| -rw-r--r-- | java/sdk_library_test.go | 26 | ||||
| -rw-r--r-- | java/testing.go | 8 |
10 files changed, 240 insertions, 20 deletions
diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index ae2440466..c89c64358 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -229,6 +229,7 @@ type SourceOnlyBootclasspathProperties struct { type BootclasspathFragmentModule struct { android.ModuleBase + android.DefaultableModuleBase android.ApexModuleBase ClasspathFragmentBase @@ -267,6 +268,7 @@ func bootclasspathFragmentFactory() android.Module { android.InitApexModule(m) initClasspathFragment(m, BOOTCLASSPATH) android.InitAndroidArchModule(m, android.DeviceSupported, android.MultilibCommon) + android.InitDefaultableModule(m) android.AddLoadHook(m, func(ctx android.LoadHookContext) { // If code coverage has been enabled for the framework then append the properties with @@ -399,6 +401,11 @@ func (i BootclasspathFragmentApexContentInfo) ProfileInstallPathInApex() string func (b *BootclasspathFragmentModule) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool { tag := ctx.OtherModuleDependencyTag(dep) + + // If the module is a default module, do not check the tag + if _, ok := dep.(*Defaults); ok { + return true + } if IsBootclasspathFragmentContentDepTag(tag) { // Boot image contents are automatically added to apex. return true diff --git a/java/bootclasspath_fragment_test.go b/java/bootclasspath_fragment_test.go index 216c3b348..95cd4a922 100644 --- a/java/bootclasspath_fragment_test.go +++ b/java/bootclasspath_fragment_test.go @@ -222,6 +222,11 @@ func TestBootclasspathFragment_StubLibs(t *testing.T) { PrepareForTestWithJavaSdkLibraryFiles, FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary", "mycoreplatform"), FixtureConfigureApexBootJars("someapex:mysdklibrary"), + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.BuildFlags = map[string]string{ + "RELEASE_HIDDEN_API_EXPORTABLE_STUBS": "true", + } + }), ).RunTestWithBp(t, ` bootclasspath_fragment { name: "myfragment", @@ -277,11 +282,11 @@ func TestBootclasspathFragment_StubLibs(t *testing.T) { stubsJar := "out/soong/.intermediates/mystublib/android_common/dex/mystublib.jar" // Stubs jars for mysdklibrary - publicStubsJar := "out/soong/.intermediates/mysdklibrary.stubs/android_common/dex/mysdklibrary.stubs.jar" - systemStubsJar := "out/soong/.intermediates/mysdklibrary.stubs.system/android_common/dex/mysdklibrary.stubs.system.jar" + publicStubsJar := "out/soong/.intermediates/mysdklibrary.stubs.exportable/android_common/dex/mysdklibrary.stubs.exportable.jar" + systemStubsJar := "out/soong/.intermediates/mysdklibrary.stubs.exportable.system/android_common/dex/mysdklibrary.stubs.exportable.system.jar" // Stubs jars for myothersdklibrary - otherPublicStubsJar := "out/soong/.intermediates/myothersdklibrary.stubs/android_common/dex/myothersdklibrary.stubs.jar" + otherPublicStubsJar := "out/soong/.intermediates/myothersdklibrary.stubs.exportable/android_common/dex/myothersdklibrary.stubs.exportable.jar" // Check that SdkPublic uses public stubs for all sdk libraries. android.AssertPathsRelativeToTopEquals(t, "public dex stubs jar", []string{otherPublicStubsJar, publicStubsJar, stubsJar}, info.TransitiveStubDexJarsByScope.StubDexJarsForScope(PublicHiddenAPIScope)) diff --git a/java/core-libraries/Android.bp b/java/core-libraries/Android.bp index c6ab5611a..8ffe5113c 100644 --- a/java/core-libraries/Android.bp +++ b/java/core-libraries/Android.bp @@ -38,9 +38,6 @@ java_defaults { visibility: ["//visibility:public"], sdk_version: "none", system_modules: "none", - dist: { - targets: dist_targets, - }, } java_library { @@ -89,6 +86,32 @@ java_library { }, } +java_library { + name: "core.current.stubs.exportable.from-source", + defaults: [ + "core.current.stubs.defaults", + ], + static_libs: [ + "art.module.public.api.stubs.exportable", + "conscrypt.module.public.api.stubs.exportable", + "i18n.module.public.api.stubs.exportable", + ], + dist: { + targets: dist_targets, + dest: "core.current.stubs.jar", + }, +} + +java_library { + name: "core.current.stubs.exportable", + defaults: [ + "core.current.stubs.defaults", + ], + static_libs: [ + "core.current.stubs.exportable.from-source", + ], +} + // Distributed with the SDK for turning into system modules to compile apps // against. // @@ -298,6 +321,19 @@ java_library { ], } +java_library { + name: "legacy.core.platform.api.stubs.exportable.from-source", + visibility: core_platform_visibility, + defaults: [ + "core.platform.api.stubs.defaults", + ], + static_libs: [ + "art.module.public.api.stubs.exportable.module_lib", + "conscrypt.module.platform.api.stubs.exportable", + "legacy.i18n.module.platform.api.stubs.exportable", + ], +} + java_defaults { name: "android_core_platform_stubs_current_contributions", api_surface: "core_platform", @@ -345,6 +381,17 @@ java_library { }, } +java_library { + name: "legacy.core.platform.api.stubs.exportable", + visibility: core_platform_visibility, + defaults: [ + "core.platform.api.stubs.defaults", + ], + static_libs: [ + "legacy.core.platform.api.stubs.exportable.from-source", + ], +} + java_defaults { name: "core.platform.api.stubs.defaults", hostdex: true, diff --git a/java/droidstubs.go b/java/droidstubs.go index 04e6be8d7..2904ac584 100644 --- a/java/droidstubs.go +++ b/java/droidstubs.go @@ -199,6 +199,10 @@ type ApiStubsSrcProvider interface { StubsSrcJar() android.Path } +type ExportableApiStubsSrcProvider interface { + ExportableStubsSrcJar() android.Path +} + // Provider of information about API stubs, used by java_sdk_library. type ApiStubsProvider interface { AnnotationsZip() android.Path @@ -208,6 +212,14 @@ type ApiStubsProvider interface { ApiStubsSrcProvider } +type ExportableApiStubsProvider interface { + ExportableAnnotationsZip() android.Path + ExportableApiFilePath() android.Path + ExportableRemovedApiFilePath() android.Path + + ExportableApiStubsSrcProvider +} + type currentApiTimestampProvider interface { CurrentApiTimestamp() android.Path } diff --git a/java/hiddenapi_modular.go b/java/hiddenapi_modular.go index a51286064..06e17c902 100644 --- a/java/hiddenapi_modular.go +++ b/java/hiddenapi_modular.go @@ -245,12 +245,22 @@ func hiddenAPIComputeMonolithicStubLibModules(config android.Config) map[*Hidden testStubModules = append(testStubModules, "sdk_test_current_android") } else { // Use stub modules built from source - publicStubModules = append(publicStubModules, android.SdkPublic.DefaultJavaLibraryName()) - systemStubModules = append(systemStubModules, android.SdkSystem.DefaultJavaLibraryName()) - testStubModules = append(testStubModules, android.SdkTest.DefaultJavaLibraryName()) + if config.ReleaseHiddenApiExportableStubs() { + publicStubModules = append(publicStubModules, android.SdkPublic.DefaultExportableJavaLibraryName()) + systemStubModules = append(systemStubModules, android.SdkSystem.DefaultExportableJavaLibraryName()) + testStubModules = append(testStubModules, android.SdkTest.DefaultExportableJavaLibraryName()) + } else { + publicStubModules = append(publicStubModules, android.SdkPublic.DefaultJavaLibraryName()) + systemStubModules = append(systemStubModules, android.SdkSystem.DefaultJavaLibraryName()) + testStubModules = append(testStubModules, android.SdkTest.DefaultJavaLibraryName()) + } } // We do not have prebuilts of the core platform api yet - corePlatformStubModules = append(corePlatformStubModules, "legacy.core.platform.api.stubs") + if config.ReleaseHiddenApiExportableStubs() { + corePlatformStubModules = append(corePlatformStubModules, "legacy.core.platform.api.stubs.exportable") + } else { + corePlatformStubModules = append(corePlatformStubModules, "legacy.core.platform.api.stubs") + } // Allow products to define their own stubs for custom product jars that apps can use. publicStubModules = append(publicStubModules, config.ProductHiddenAPIStubs()...) @@ -289,7 +299,12 @@ func hiddenAPIAddStubLibDependencies(ctx android.BottomUpMutatorContext, apiScop func hiddenAPIRetrieveDexJarBuildPath(ctx android.ModuleContext, module android.Module, kind android.SdkKind) android.Path { var dexJar OptionalDexJarPath if sdkLibrary, ok := module.(SdkLibraryDependency); ok { - dexJar = sdkLibrary.SdkApiStubDexJar(ctx, kind) + if ctx.Config().ReleaseHiddenApiExportableStubs() { + dexJar = sdkLibrary.SdkApiExportableStubDexJar(ctx, kind) + } else { + dexJar = sdkLibrary.SdkApiStubDexJar(ctx, kind) + } + } else if j, ok := module.(UsesLibraryDependency); ok { dexJar = j.DexJarBuildPath(ctx) } else { diff --git a/java/hiddenapi_singleton_test.go b/java/hiddenapi_singleton_test.go index 37afe297c..c1fee2184 100644 --- a/java/hiddenapi_singleton_test.go +++ b/java/hiddenapi_singleton_test.go @@ -177,10 +177,10 @@ func TestHiddenAPISingletonSdks(t *testing.T) { { name: "testBundled", unbundledBuild: false, - publicStub: "android_stubs_current", - systemStub: "android_system_stubs_current", - testStub: "android_test_stubs_current", - corePlatformStub: "legacy.core.platform.api.stubs", + publicStub: "android_stubs_current_exportable", + systemStub: "android_system_stubs_current_exportable", + testStub: "android_test_stubs_current_exportable", + corePlatformStub: "legacy.core.platform.api.stubs.exportable", preparer: android.GroupFixturePreparers(), }, { name: "testUnbundled", @@ -188,7 +188,7 @@ func TestHiddenAPISingletonSdks(t *testing.T) { publicStub: "sdk_public_current_android", systemStub: "sdk_system_current_android", testStub: "sdk_test_current_android", - corePlatformStub: "legacy.core.platform.api.stubs", + corePlatformStub: "legacy.core.platform.api.stubs.exportable", preparer: PrepareForTestWithPrebuiltsOfCurrentApi, }, } @@ -200,6 +200,9 @@ func TestHiddenAPISingletonSdks(t *testing.T) { prepareForTestWithDefaultPlatformBootclasspath, android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { variables.Always_use_prebuilt_sdks = proptools.BoolPtr(tc.unbundledBuild) + variables.BuildFlags = map[string]string{ + "RELEASE_HIDDEN_API_EXPORTABLE_STUBS": "true", + } }), ).RunTest(t) diff --git a/java/java.go b/java/java.go index 4eeded386..c5a414250 100644 --- a/java/java.go +++ b/java/java.go @@ -2726,6 +2726,8 @@ func DefaultsFactory() android.Module { &LintProperties{}, &appTestHelperAppProperties{}, &JavaApiLibraryProperties{}, + &bootclasspathFragmentProperties{}, + &SourceOnlyBootclasspathProperties{}, ) android.InitDefaultsModule(module) diff --git a/java/sdk_library.go b/java/sdk_library.go index 058862b43..72fbb1577 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -104,9 +104,16 @@ type apiScope struct { // The name of the property in the java_sdk_library_import propertyName string - // The tag to use to depend on the stubs library module. + // The tag to use to depend on the stubs library module if the parent module + // does not differentiate everything and exportable stubs (e.g. sdk_library_import). stubsTag scopeDependencyTag + // The tag to use to depend on the everything stubs library module. + everythingStubsTag scopeDependencyTag + + // The tag to use to depend on the exportable stubs library module. + exportableStubsTag scopeDependencyTag + // The tag to use to depend on the stubs source module (if separate from the API module). stubsSourceTag scopeDependencyTag @@ -172,6 +179,16 @@ func initApiScope(scope *apiScope) *apiScope { apiScope: scope, depInfoExtractor: (*scopePaths).extractStubsLibraryInfoFromDependency, } + scope.everythingStubsTag = scopeDependencyTag{ + name: name + "-stubs-everything", + apiScope: scope, + depInfoExtractor: (*scopePaths).extractEverythingStubsLibraryInfoFromDependency, + } + scope.exportableStubsTag = scopeDependencyTag{ + name: name + "-stubs-exportable", + apiScope: scope, + depInfoExtractor: (*scopePaths).extractExportableStubsLibraryInfoFromDependency, + } scope.stubsSourceTag = scopeDependencyTag{ name: name + "-stubs-source", apiScope: scope, @@ -669,6 +686,11 @@ type scopePaths struct { // This is not the implementation jar, it still only contains stubs. stubsDexJarPath OptionalDexJarPath + // The exportable dex jar for the stubs. + // This is not the implementation jar, it still only contains stubs. + // Includes unflagged apis and flagged apis enabled by release configurations. + exportableStubsDexJarPath OptionalDexJarPath + // The API specification file, e.g. system_current.txt. currentApiFilePath android.OptionalPath @@ -695,6 +717,36 @@ func (paths *scopePaths) extractStubsLibraryInfoFromDependency(ctx android.Modul libDep := dep.(UsesLibraryDependency) paths.stubsDexJarPath = libDep.DexJarBuildPath(ctx) + paths.exportableStubsDexJarPath = libDep.DexJarBuildPath(ctx) + return nil + } else { + return fmt.Errorf("expected module that has JavaInfoProvider, e.g. java_library") + } +} + +func (paths *scopePaths) extractEverythingStubsLibraryInfoFromDependency(ctx android.ModuleContext, dep android.Module) error { + if lib, ok := android.OtherModuleProvider(ctx, dep, JavaInfoProvider); ok { + paths.stubsHeaderPath = lib.HeaderJars + if !ctx.Config().ReleaseHiddenApiExportableStubs() { + paths.stubsImplPath = lib.ImplementationJars + } + + libDep := dep.(UsesLibraryDependency) + paths.stubsDexJarPath = libDep.DexJarBuildPath(ctx) + return nil + } else { + return fmt.Errorf("expected module that has JavaInfoProvider, e.g. java_library") + } +} + +func (paths *scopePaths) extractExportableStubsLibraryInfoFromDependency(ctx android.ModuleContext, dep android.Module) error { + if lib, ok := android.OtherModuleProvider(ctx, dep, JavaInfoProvider); ok { + if ctx.Config().ReleaseHiddenApiExportableStubs() { + paths.stubsImplPath = lib.ImplementationJars + } + + libDep := dep.(UsesLibraryDependency) + paths.exportableStubsDexJarPath = libDep.DexJarBuildPath(ctx) return nil } else { return fmt.Errorf("expected module that has JavaInfoProvider, e.g. java_library") @@ -710,6 +762,15 @@ func (paths *scopePaths) treatDepAsApiStubsProvider(dep android.Module, action f } } +func (paths *scopePaths) treatDepAsExportableApiStubsProvider(dep android.Module, action func(provider ExportableApiStubsProvider)) error { + if exportableApiStubsProvider, ok := dep.(ExportableApiStubsProvider); ok { + action(exportableApiStubsProvider) + return nil + } else { + return fmt.Errorf("expected module that implements ExportableApiStubsSrcProvider, e.g. droidstubs") + } +} + func (paths *scopePaths) treatDepAsApiStubsSrcProvider(dep android.Module, action func(provider ApiStubsSrcProvider)) error { if apiStubsProvider, ok := dep.(ApiStubsSrcProvider); ok { action(apiStubsProvider) @@ -725,6 +786,12 @@ func (paths *scopePaths) extractApiInfoFromApiStubsProvider(provider ApiStubsPro paths.removedApiFilePath = android.OptionalPathForPath(provider.RemovedApiFilePath()) } +func (paths *scopePaths) extractApiInfoFromExportableApiStubsProvider(provider ExportableApiStubsProvider) { + paths.annotationsZip = android.OptionalPathForPath(provider.ExportableAnnotationsZip()) + paths.currentApiFilePath = android.OptionalPathForPath(provider.ExportableApiFilePath()) + paths.removedApiFilePath = android.OptionalPathForPath(provider.ExportableRemovedApiFilePath()) +} + func (paths *scopePaths) extractApiInfoFromDep(ctx android.ModuleContext, dep android.Module) error { return paths.treatDepAsApiStubsProvider(dep, func(provider ApiStubsProvider) { paths.extractApiInfoFromApiStubsProvider(provider) @@ -735,6 +802,10 @@ func (paths *scopePaths) extractStubsSourceInfoFromApiStubsProviders(provider Ap paths.stubsSrcJar = android.OptionalPathForPath(provider.StubsSrcJar()) } +func (paths *scopePaths) extractStubsSourceInfoFromExportableApiStubsProviders(provider ExportableApiStubsSrcProvider) { + paths.stubsSrcJar = android.OptionalPathForPath(provider.ExportableStubsSrcJar()) +} + func (paths *scopePaths) extractStubsSourceInfoFromDep(ctx android.ModuleContext, dep android.Module) error { return paths.treatDepAsApiStubsSrcProvider(dep, func(provider ApiStubsSrcProvider) { paths.extractStubsSourceInfoFromApiStubsProviders(provider) @@ -742,6 +813,12 @@ func (paths *scopePaths) extractStubsSourceInfoFromDep(ctx android.ModuleContext } func (paths *scopePaths) extractStubsSourceAndApiInfoFromApiStubsProvider(ctx android.ModuleContext, dep android.Module) error { + if ctx.Config().ReleaseHiddenApiExportableStubs() { + return paths.treatDepAsExportableApiStubsProvider(dep, func(provider ExportableApiStubsProvider) { + paths.extractApiInfoFromExportableApiStubsProvider(provider) + paths.extractStubsSourceInfoFromExportableApiStubsProviders(provider) + }) + } return paths.treatDepAsApiStubsProvider(dep, func(provider ApiStubsProvider) { paths.extractApiInfoFromApiStubsProvider(provider) paths.extractStubsSourceInfoFromApiStubsProviders(provider) @@ -1132,6 +1209,16 @@ func (c *commonToSdkLibraryAndImport) SdkApiStubDexJar(ctx android.BaseModuleCon } // to satisfy SdkLibraryDependency interface +func (c *commonToSdkLibraryAndImport) SdkApiExportableStubDexJar(ctx android.BaseModuleContext, kind android.SdkKind) OptionalDexJarPath { + paths := c.selectScopePaths(ctx, kind) + if paths == nil { + return makeUnsetDexJarPath() + } + + return paths.exportableStubsDexJarPath +} + +// to satisfy SdkLibraryDependency interface func (c *commonToSdkLibraryAndImport) SdkRemovedTxtFile(ctx android.BaseModuleContext, kind android.SdkKind) android.OptionalPath { apiScope := sdkKindToApiScope(kind) paths := c.findScopePaths(apiScope) @@ -1249,10 +1336,16 @@ type SdkLibraryDependency interface { // they are identical to the corresponding header jars. SdkImplementationJars(ctx android.BaseModuleContext, sdkVersion android.SdkSpec) android.Paths - // SdkApiStubDexJar returns the dex jar for the stubs. It is needed by the hiddenapi processing - // tool which processes dex files. + // SdkApiStubDexJar returns the dex jar for the stubs for the prebuilt + // java_sdk_library_import module. It is needed by the hiddenapi processing tool which + // processes dex files. SdkApiStubDexJar(ctx android.BaseModuleContext, kind android.SdkKind) OptionalDexJarPath + // SdkApiExportableStubDexJar returns the exportable dex jar for the stubs for + // java_sdk_library module. It is needed by the hiddenapi processing tool which processes + // dex files. + SdkApiExportableStubDexJar(ctx android.BaseModuleContext, kind android.SdkKind) OptionalDexJarPath + // SdkRemovedTxtFile returns the optional path to the removed.txt file for the specified sdk kind. SdkRemovedTxtFile(ctx android.BaseModuleContext, kind android.SdkKind) android.OptionalPath @@ -1365,8 +1458,10 @@ func (module *SdkLibrary) ComponentDepsMutator(ctx android.BottomUpMutatorContex for _, apiScope := range module.getGeneratedApiScopes(ctx) { // Add dependencies to the stubs library stubModuleName := module.stubsLibraryModuleName(apiScope) + ctx.AddVariationDependencies(nil, apiScope.everythingStubsTag, stubModuleName) - ctx.AddVariationDependencies(nil, apiScope.stubsTag, stubModuleName) + exportableStubModuleName := module.exportableStubsLibraryModuleName(apiScope) + ctx.AddVariationDependencies(nil, apiScope.exportableStubsTag, exportableStubModuleName) // Add a dependency on the stubs source in order to access both stubs source and api information. ctx.AddVariationDependencies(nil, apiScope.stubsSourceAndApiTag, module.stubsSourceModuleName(apiScope)) diff --git a/java/sdk_library_test.go b/java/sdk_library_test.go index c14f3e611..3326ec575 100644 --- a/java/sdk_library_test.go +++ b/java/sdk_library_test.go @@ -38,6 +38,11 @@ func TestJavaSdkLibrary(t *testing.T) { android.FixtureModifyConfig(func(config android.Config) { config.SetApiLibraries([]string{"foo"}) }), + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.BuildFlags = map[string]string{ + "RELEASE_HIDDEN_API_EXPORTABLE_STUBS": "true", + } + }), ).RunTestWithBp(t, ` droiddoc_exported_dir { name: "droiddoc-templates-sdk", @@ -139,6 +144,9 @@ func TestJavaSdkLibrary(t *testing.T) { "foo.api.public.latest", "foo.api.system.latest", "foo.stubs", + "foo.stubs.exportable", + "foo.stubs.exportable.system", + "foo.stubs.exportable.test", "foo.stubs.source", "foo.stubs.source.system", "foo.stubs.source.test", @@ -529,6 +537,11 @@ func TestJavaSdkLibrary_Deps(t *testing.T) { prepareForJavaTest, PrepareForTestWithJavaSdkLibraryFiles, FixtureWithLastReleaseApis("sdklib"), + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.BuildFlags = map[string]string{ + "RELEASE_HIDDEN_API_EXPORTABLE_STUBS": "true", + } + }), ).RunTestWithBp(t, ` java_sdk_library { name: "sdklib", @@ -547,6 +560,7 @@ func TestJavaSdkLibrary_Deps(t *testing.T) { `sdklib.api.public.latest`, `sdklib.impl`, `sdklib.stubs`, + `sdklib.stubs.exportable`, `sdklib.stubs.source`, `sdklib.xml`, }) @@ -919,6 +933,11 @@ func TestJavaSdkLibraryImport_WithSource(t *testing.T) { prepareForJavaTest, PrepareForTestWithJavaSdkLibraryFiles, FixtureWithLastReleaseApis("sdklib"), + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.BuildFlags = map[string]string{ + "RELEASE_HIDDEN_API_EXPORTABLE_STUBS": "true", + } + }), ).RunTestWithBp(t, ` java_sdk_library { name: "sdklib", @@ -945,6 +964,7 @@ func TestJavaSdkLibraryImport_WithSource(t *testing.T) { `sdklib.api.public.latest`, `sdklib.impl`, `sdklib.stubs`, + `sdklib.stubs.exportable`, `sdklib.stubs.source`, `sdklib.xml`, }) @@ -966,6 +986,11 @@ func testJavaSdkLibraryImport_Preferred(t *testing.T, prefer string, preparer an PrepareForTestWithJavaSdkLibraryFiles, FixtureWithLastReleaseApis("sdklib"), preparer, + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.BuildFlags = map[string]string{ + "RELEASE_HIDDEN_API_EXPORTABLE_STUBS": "true", + } + }), ).RunTestWithBp(t, ` java_sdk_library { name: "sdklib", @@ -1018,6 +1043,7 @@ func testJavaSdkLibraryImport_Preferred(t *testing.T, prefer string, preparer an `sdklib.api.public.latest`, `sdklib.impl`, `sdklib.stubs`, + `sdklib.stubs.exportable`, `sdklib.stubs.source`, `sdklib.xml`, }) diff --git a/java/testing.go b/java/testing.go index 5959c49e4..04e8c734e 100644 --- a/java/testing.go +++ b/java/testing.go @@ -407,6 +407,14 @@ func gatherRequiredDepsForTest() string { "legacy.core.platform.api.stubs", "stable.core.platform.api.stubs", + "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", + "core.current.stubs.exportable", + "legacy.core.platform.api.stubs.exportable", + "kotlin-stdlib", "kotlin-stdlib-jdk7", "kotlin-stdlib-jdk8", |