Loading java/bootclasspath_fragment_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -197,7 +197,7 @@ func TestBootclasspathFragment_StubLibs(t *testing.T) { ], }, core_platform_api: { stub_libs: ["mycoreplatform"], stub_libs: ["mycoreplatform.stubs"], }, } Loading java/hiddenapi_modular.go +15 −0 Original line number Diff line number Diff line Loading @@ -586,6 +586,13 @@ type StubDexJarsByModule map[string]ModuleStubDexJars // addStubDexJar adds a stub dex jar path provided by the specified module for the specified scope. func (s StubDexJarsByModule) addStubDexJar(ctx android.ModuleContext, module android.Module, scope *HiddenAPIScope, stubDexJar android.Path) { name := android.RemoveOptionalPrebuiltPrefix(module.Name()) // Each named module provides one dex jar for each scope. However, in some cases different API // versions of a single classes are provided by separate modules. e.g. the core platform // version of java.lang.Object is provided by the legacy.art.module.platform.api module but the // public version is provided by the art.module.public.api module. In those cases it is necessary // to treat all those modules as they were the same name, otherwise it will result in multiple // definitions of a single class being passed to hidden API processing which will cause an error. if name == scope.nonUpdatablePrebuiltModule || name == scope.nonUpdatableSourceModule { // Treat all *android-non-updatable* modules as if they were part of an android-non-updatable // java_sdk_library. Loading @@ -606,6 +613,14 @@ func (s StubDexJarsByModule) addStubDexJar(ctx android.ModuleContext, module and // conscrypt.module.public.api java_sdk_library which will be the case once the former has been // migrated to a module_lib API. name = "conscrypt.module.public.api" } else if d, ok := module.(SdkLibraryComponentDependency); ok { sdkLibraryName := d.SdkLibraryName() if sdkLibraryName != nil { // The module is a component of a java_sdk_library so use the name of the java_sdk_library. // e.g. if this module is `foo.system.stubs` and is part of the `foo` java_sdk_library then // use `foo` as the name. name = *sdkLibraryName } } stubDexJarsByScope := s[name] if stubDexJarsByScope == nil { Loading java/sdk_library.go +19 −2 Original line number Diff line number Diff line Loading @@ -675,10 +675,13 @@ func (c *commonToSdkLibraryAndImport) initCommonAfterDefaultsApplied(ctx android return false } namePtr := proptools.StringPtr(c.module.BaseModuleName()) c.sdkLibraryComponentProperties.SdkLibraryName = namePtr // Only track this sdk library if this can be used as a shared library. if c.sharedLibrary() { // Use the name specified in the module definition as the owner. c.sdkLibraryComponentProperties.SdkLibraryToImplicitlyTrack = proptools.StringPtr(c.module.BaseModuleName()) c.sdkLibraryComponentProperties.SdkLibraryToImplicitlyTrack = namePtr } return true Loading Loading @@ -922,15 +925,19 @@ func (c *commonToSdkLibraryAndImport) SdkRemovedTxtFile(ctx android.BaseModuleCo func (c *commonToSdkLibraryAndImport) sdkComponentPropertiesForChildLibrary() interface{} { componentProps := &struct { SdkLibraryName *string SdkLibraryToImplicitlyTrack *string }{} namePtr := proptools.StringPtr(c.module.BaseModuleName()) componentProps.SdkLibraryName = namePtr if c.sharedLibrary() { // Mark the stubs library as being components of this java_sdk_library so that // any app that includes code which depends (directly or indirectly) on the stubs // library will have the appropriate <uses-library> invocation inserted into its // manifest if necessary. componentProps.SdkLibraryToImplicitlyTrack = proptools.StringPtr(c.module.BaseModuleName()) componentProps.SdkLibraryToImplicitlyTrack = namePtr } return componentProps Loading @@ -949,6 +956,8 @@ func (c *commonToSdkLibraryAndImport) stubLibrariesCompiledForDex() bool { // Properties related to the use of a module as an component of a java_sdk_library. type SdkLibraryComponentProperties struct { // The name of the java_sdk_library/_import module. SdkLibraryName *string `blueprint:"mutated"` // The name of the java_sdk_library/_import to add to a <uses-library> entry // in the AndroidManifest.xml of any Android app that includes code that references Loading @@ -966,6 +975,11 @@ func (e *EmbeddableSdkLibraryComponent) initSdkLibraryComponent(module android.M module.AddProperties(&e.sdkLibraryComponentProperties) } // to satisfy SdkLibraryComponentDependency func (e *EmbeddableSdkLibraryComponent) SdkLibraryName() *string { return e.sdkLibraryComponentProperties.SdkLibraryName } // to satisfy SdkLibraryComponentDependency func (e *EmbeddableSdkLibraryComponent) OptionalImplicitSdkLibrary() *string { return e.sdkLibraryComponentProperties.SdkLibraryToImplicitlyTrack Loading @@ -982,6 +996,9 @@ func (e *EmbeddableSdkLibraryComponent) OptionalSdkLibraryImplementation() *stri type SdkLibraryComponentDependency interface { UsesLibraryDependency // SdkLibraryName returns the name of the java_sdk_library/_import module. SdkLibraryName() *string // The optional name of the sdk library that should be implicitly added to the // AndroidManifest of an app that contains code which references the sdk library. // Loading Loading
java/bootclasspath_fragment_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -197,7 +197,7 @@ func TestBootclasspathFragment_StubLibs(t *testing.T) { ], }, core_platform_api: { stub_libs: ["mycoreplatform"], stub_libs: ["mycoreplatform.stubs"], }, } Loading
java/hiddenapi_modular.go +15 −0 Original line number Diff line number Diff line Loading @@ -586,6 +586,13 @@ type StubDexJarsByModule map[string]ModuleStubDexJars // addStubDexJar adds a stub dex jar path provided by the specified module for the specified scope. func (s StubDexJarsByModule) addStubDexJar(ctx android.ModuleContext, module android.Module, scope *HiddenAPIScope, stubDexJar android.Path) { name := android.RemoveOptionalPrebuiltPrefix(module.Name()) // Each named module provides one dex jar for each scope. However, in some cases different API // versions of a single classes are provided by separate modules. e.g. the core platform // version of java.lang.Object is provided by the legacy.art.module.platform.api module but the // public version is provided by the art.module.public.api module. In those cases it is necessary // to treat all those modules as they were the same name, otherwise it will result in multiple // definitions of a single class being passed to hidden API processing which will cause an error. if name == scope.nonUpdatablePrebuiltModule || name == scope.nonUpdatableSourceModule { // Treat all *android-non-updatable* modules as if they were part of an android-non-updatable // java_sdk_library. Loading @@ -606,6 +613,14 @@ func (s StubDexJarsByModule) addStubDexJar(ctx android.ModuleContext, module and // conscrypt.module.public.api java_sdk_library which will be the case once the former has been // migrated to a module_lib API. name = "conscrypt.module.public.api" } else if d, ok := module.(SdkLibraryComponentDependency); ok { sdkLibraryName := d.SdkLibraryName() if sdkLibraryName != nil { // The module is a component of a java_sdk_library so use the name of the java_sdk_library. // e.g. if this module is `foo.system.stubs` and is part of the `foo` java_sdk_library then // use `foo` as the name. name = *sdkLibraryName } } stubDexJarsByScope := s[name] if stubDexJarsByScope == nil { Loading
java/sdk_library.go +19 −2 Original line number Diff line number Diff line Loading @@ -675,10 +675,13 @@ func (c *commonToSdkLibraryAndImport) initCommonAfterDefaultsApplied(ctx android return false } namePtr := proptools.StringPtr(c.module.BaseModuleName()) c.sdkLibraryComponentProperties.SdkLibraryName = namePtr // Only track this sdk library if this can be used as a shared library. if c.sharedLibrary() { // Use the name specified in the module definition as the owner. c.sdkLibraryComponentProperties.SdkLibraryToImplicitlyTrack = proptools.StringPtr(c.module.BaseModuleName()) c.sdkLibraryComponentProperties.SdkLibraryToImplicitlyTrack = namePtr } return true Loading Loading @@ -922,15 +925,19 @@ func (c *commonToSdkLibraryAndImport) SdkRemovedTxtFile(ctx android.BaseModuleCo func (c *commonToSdkLibraryAndImport) sdkComponentPropertiesForChildLibrary() interface{} { componentProps := &struct { SdkLibraryName *string SdkLibraryToImplicitlyTrack *string }{} namePtr := proptools.StringPtr(c.module.BaseModuleName()) componentProps.SdkLibraryName = namePtr if c.sharedLibrary() { // Mark the stubs library as being components of this java_sdk_library so that // any app that includes code which depends (directly or indirectly) on the stubs // library will have the appropriate <uses-library> invocation inserted into its // manifest if necessary. componentProps.SdkLibraryToImplicitlyTrack = proptools.StringPtr(c.module.BaseModuleName()) componentProps.SdkLibraryToImplicitlyTrack = namePtr } return componentProps Loading @@ -949,6 +956,8 @@ func (c *commonToSdkLibraryAndImport) stubLibrariesCompiledForDex() bool { // Properties related to the use of a module as an component of a java_sdk_library. type SdkLibraryComponentProperties struct { // The name of the java_sdk_library/_import module. SdkLibraryName *string `blueprint:"mutated"` // The name of the java_sdk_library/_import to add to a <uses-library> entry // in the AndroidManifest.xml of any Android app that includes code that references Loading @@ -966,6 +975,11 @@ func (e *EmbeddableSdkLibraryComponent) initSdkLibraryComponent(module android.M module.AddProperties(&e.sdkLibraryComponentProperties) } // to satisfy SdkLibraryComponentDependency func (e *EmbeddableSdkLibraryComponent) SdkLibraryName() *string { return e.sdkLibraryComponentProperties.SdkLibraryName } // to satisfy SdkLibraryComponentDependency func (e *EmbeddableSdkLibraryComponent) OptionalImplicitSdkLibrary() *string { return e.sdkLibraryComponentProperties.SdkLibraryToImplicitlyTrack Loading @@ -982,6 +996,9 @@ func (e *EmbeddableSdkLibraryComponent) OptionalSdkLibraryImplementation() *stri type SdkLibraryComponentDependency interface { UsesLibraryDependency // SdkLibraryName returns the name of the java_sdk_library/_import module. SdkLibraryName() *string // The optional name of the sdk library that should be implicitly added to the // AndroidManifest of an app that contains code which references the sdk library. // Loading