diff --git a/java/aar.go b/java/aar.go index c8daf835b..0e103f248 100644 --- a/java/aar.go +++ b/java/aar.go @@ -379,11 +379,8 @@ func aaptLibs(ctx android.ModuleContext, sdkContext sdkContext) (transitiveStati sharedLibs = append(sharedLibs, exportPackage) } - // If the module is (or possibly could be) a component of a java_sdk_library - // (including the java_sdk_library) itself then append any implicit sdk library - // names to the list of sdk libraries to be added to the manifest. - if component, ok := module.(SdkLibraryComponentDependency); ok { - sdkLibraries = append(sdkLibraries, component.OptionalImplicitSdkLibrary()...) + if _, ok := module.(SdkLibraryDependency); ok { + sdkLibraries = append(sdkLibraries, ctx.OtherModuleName(module)) } case frameworkResTag: diff --git a/java/app_test.go b/java/app_test.go index 12b935ed3..c731a1713 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -2382,20 +2382,6 @@ func TestUsesLibraries(t *testing.T) { sdk_version: "current", } - java_sdk_library { - name: "qux", - srcs: ["a.java"], - api_packages: ["qux"], - sdk_version: "current", - } - - java_sdk_library { - name: "quuz", - srcs: ["a.java"], - api_packages: ["quuz"], - sdk_version: "current", - } - java_sdk_library { name: "bar", srcs: ["a.java"], @@ -2406,7 +2392,6 @@ func TestUsesLibraries(t *testing.T) { android_app { name: "app", srcs: ["a.java"], - libs: ["qux", "quuz.stubs"], uses_libs: ["foo"], sdk_version: "current", optional_uses_libs: [ @@ -2437,15 +2422,6 @@ func TestUsesLibraries(t *testing.T) { app := ctx.ModuleForTests("app", "android_common") prebuilt := ctx.ModuleForTests("prebuilt", "android_common") - // Test that implicit dependencies on java_sdk_library instances are passed to the manifest. - manifestFixerArgs := app.Output("manifest_fixer/AndroidManifest.xml").Args["args"] - if w := "--uses-library qux"; !strings.Contains(manifestFixerArgs, w) { - t.Errorf("unexpected manifest_fixer args: wanted %q in %q", w, manifestFixerArgs) - } - if w := "--uses-library quuz"; !strings.Contains(manifestFixerArgs, w) { - t.Errorf("unexpected manifest_fixer args: wanted %q in %q", w, manifestFixerArgs) - } - // Test that all libraries are verified cmd := app.Rule("verify_uses_libraries").RuleParams.Command if w := "--uses-library foo"; !strings.Contains(cmd, w) { diff --git a/java/java.go b/java/java.go index 00b11f77a..da9bd3dfe 100644 --- a/java/java.go +++ b/java/java.go @@ -355,17 +355,7 @@ func (me *CompilerDeviceProperties) EffectiveOptimizeEnabled() bool { } // Functionality common to Module and Import -// -// It is embedded in Module so its functionality can be used by methods in Module -// but it is currently only initialized by Import and Library. type embeddableInModuleAndImport struct { - - // Functionality related to this being used as a component of a java_sdk_library. - EmbeddableSdkLibraryComponent -} - -func (e *embeddableInModuleAndImport) initModuleAndImport(moduleBase *android.ModuleBase) { - e.initSdkLibraryComponent(moduleBase) } // Module/Import's DepIsInSameApex(...) delegates to this method. @@ -506,6 +496,11 @@ type Dependency interface { JacocoReportClassesFile() android.Path } +type SdkLibraryDependency interface { + SdkHeaderJars(ctx android.BaseModuleContext, sdkVersion sdkSpec) android.Paths + SdkImplementationJars(ctx android.BaseModuleContext, sdkVersion sdkSpec) android.Paths +} + type xref interface { XrefJavaFiles() android.Paths } @@ -935,12 +930,6 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { } } - // If this is a component library (stubs, etc.) for a java_sdk_library then - // add the name of that java_sdk_library to the exported sdk libs to make sure - // that, if necessary, a element for that java_sdk_library is - // added to the Android manifest. - j.exportedSdkLibs = append(j.exportedSdkLibs, j.OptionalImplicitSdkLibrary()...) - ctx.VisitDirectDeps(func(module android.Module) { otherName := ctx.OtherModuleName(module) tag := ctx.OtherModuleDependencyTag(module) @@ -960,7 +949,7 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { case libTag: deps.classpath = append(deps.classpath, dep.SdkHeaderJars(ctx, j.sdkVersion())...) // names of sdk libs that are directly depended are exported - j.exportedSdkLibs = append(j.exportedSdkLibs, dep.OptionalImplicitSdkLibrary()...) + j.exportedSdkLibs = append(j.exportedSdkLibs, otherName) case staticLibTag: ctx.ModuleErrorf("dependency on java_sdk_library %q can only be in libs", otherName) } @@ -2001,8 +1990,6 @@ func LibraryFactory() android.Module { &module.Module.protoProperties, &module.libraryProperties) - module.initModuleAndImport(&module.ModuleBase) - android.InitApexModule(module) android.InitSdkAwareModule(module) InitJavaModule(module, android.HostAndDeviceSupported) @@ -2464,12 +2451,6 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) { } j.combinedClasspathFile = outputFile - // If this is a component library (impl, stubs, etc.) for a java_sdk_library then - // add the name of that java_sdk_library to the exported sdk libs to make sure - // that, if necessary, a element for that java_sdk_library is - // added to the Android manifest. - j.exportedSdkLibs = append(j.exportedSdkLibs, j.OptionalImplicitSdkLibrary()...) - ctx.VisitDirectDeps(func(module android.Module) { otherName := ctx.OtherModuleName(module) tag := ctx.OtherModuleDependencyTag(module) @@ -2586,8 +2567,6 @@ func ImportFactory() android.Module { module.AddProperties(&module.properties) - module.initModuleAndImport(&module.ModuleBase) - android.InitPrebuiltModule(module, &module.properties.Jars) android.InitApexModule(module) android.InitSdkAwareModule(module) diff --git a/java/java_test.go b/java/java_test.go index 4c085cf0f..4f3a803ff 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -19,7 +19,6 @@ import ( "os" "path/filepath" "reflect" - "sort" "strconv" "strings" "testing" @@ -1154,25 +1153,13 @@ func TestJavaSdkLibrary(t *testing.T) { java_library { name: "baz", srcs: ["c.java"], - libs: ["foo", "bar.stubs"], + libs: ["foo", "bar"], sdk_version: "system_current", } - java_sdk_library_import { - name: "quuz", - public: { - jars: ["c.jar"], - }, - } - java_sdk_library_import { - name: "fred", - public: { - jars: ["b.jar"], - }, - } java_library { name: "qux", srcs: ["c.java"], - libs: ["baz", "fred", "quuz.stubs"], + libs: ["baz"], sdk_version: "system_current", } java_library { @@ -1237,9 +1224,8 @@ func TestJavaSdkLibrary(t *testing.T) { qux := ctx.ModuleForTests("qux", "android_common") if quxLib, ok := qux.Module().(*Library); ok { sdkLibs := quxLib.ExportedSdkLibs() - sort.Strings(sdkLibs) - if w := []string{"bar", "foo", "fred", "quuz"}; !reflect.DeepEqual(w, sdkLibs) { - t.Errorf("qux should export %q but exports %q", w, sdkLibs) + if len(sdkLibs) != 2 || !android.InList("foo", sdkLibs) || !android.InList("bar", sdkLibs) { + t.Errorf("qux should export \"foo\" and \"bar\" but exports %v", sdkLibs) } } } diff --git a/java/sdk_library.go b/java/sdk_library.go index 0334f80d3..5efb4d045 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -543,18 +543,12 @@ type commonToSdkLibraryAndImport struct { namingScheme sdkLibraryComponentNamingScheme commonProperties commonToSdkLibraryAndImportProperties - - // Functionality related to this being used as a component of a java_sdk_library. - EmbeddableSdkLibraryComponent } func (c *commonToSdkLibraryAndImport) initCommon(moduleBase *android.ModuleBase) { c.moduleBase = moduleBase moduleBase.AddProperties(&c.commonProperties) - - // Initialize this as an sdk library component. - c.initSdkLibraryComponent(moduleBase) } func (c *commonToSdkLibraryAndImport) initCommonAfterDefaultsApplied(ctx android.DefaultableHookContext) bool { @@ -569,9 +563,6 @@ func (c *commonToSdkLibraryAndImport) initCommonAfterDefaultsApplied(ctx android return false } - // Use the name specified in the module definition as the owner. - c.sdkLibraryComponentProperties.SdkLibraryToImplicitlyTrack = proptools.StringPtr(c.moduleBase.BaseModuleName()) - return true } @@ -737,84 +728,6 @@ func (c *commonToSdkLibraryAndImport) selectHeaderJarsForSdkVersion(ctx android. return paths.stubsHeaderPath } -func (c *commonToSdkLibraryAndImport) sdkComponentPropertiesForChildLibrary() interface{} { - componentProps := &struct { - SdkLibraryToImplicitlyTrack *string - }{ - // 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 invocation inserted into its - // manifest if necessary. - SdkLibraryToImplicitlyTrack: proptools.StringPtr(c.moduleBase.BaseModuleName()), - } - - return componentProps -} - -// 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 to add to a entry - // in the AndroidManifest.xml of any Android app that includes code that references - // this module. If not set then no java_sdk_library/_import is tracked. - SdkLibraryToImplicitlyTrack *string `blueprint:"mutated"` -} - -// Structure to be embedded in a module struct that needs to support the -// SdkLibraryComponentDependency interface. -type EmbeddableSdkLibraryComponent struct { - sdkLibraryComponentProperties SdkLibraryComponentProperties -} - -func (e *EmbeddableSdkLibraryComponent) initSdkLibraryComponent(moduleBase *android.ModuleBase) { - moduleBase.AddProperties(&e.sdkLibraryComponentProperties) -} - -// to satisfy SdkLibraryComponentDependency -func (e *EmbeddableSdkLibraryComponent) OptionalImplicitSdkLibrary() []string { - if e.sdkLibraryComponentProperties.SdkLibraryToImplicitlyTrack != nil { - return []string{*e.sdkLibraryComponentProperties.SdkLibraryToImplicitlyTrack} - } - return nil -} - -// Implemented by modules that are (or possibly could be) a component of a java_sdk_library -// (including the java_sdk_library) itself. -type SdkLibraryComponentDependency interface { - // 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. - // - // Returns an array containing 0 or 1 items rather than a *string to make it easier - // to append this to the list of exported sdk libraries. - OptionalImplicitSdkLibrary() []string -} - -// Make sure that all the module types that are components of java_sdk_library/_import -// and which can be referenced (directly or indirectly) from an android app implement -// the SdkLibraryComponentDependency interface. -var _ SdkLibraryComponentDependency = (*Library)(nil) -var _ SdkLibraryComponentDependency = (*Import)(nil) -var _ SdkLibraryComponentDependency = (*SdkLibrary)(nil) -var _ SdkLibraryComponentDependency = (*sdkLibraryImport)(nil) - -// Provides access to sdk_version related header and implentation jars. -type SdkLibraryDependency interface { - SdkLibraryComponentDependency - - // Get the header jars appropriate for the supplied sdk_version. - // - // These are turbine generated jars so they only change if the externals of the - // class changes but it does not contain and implementation or JavaDoc. - SdkHeaderJars(ctx android.BaseModuleContext, sdkVersion sdkSpec) android.Paths - - // Get the implementation jars appropriate for the supplied sdk version. - // - // These are either the implementation jar for the whole sdk library or the implementation - // jars for the stubs. The latter should only be needed when generating JavaDoc as otherwise - // they are identical to the corresponding header jars. - SdkImplementationJars(ctx android.BaseModuleContext, sdkVersion sdkSpec) android.Paths -} - type SdkLibrary struct { Library @@ -1065,7 +978,7 @@ func (module *SdkLibrary) createStubsLibrary(mctx android.DefaultableHookContext props.Dist.Tag = proptools.StringPtr(".jar") } - mctx.CreateModule(LibraryFactory, &props, module.sdkComponentPropertiesForChildLibrary()) + mctx.CreateModule(LibraryFactory, &props) } // Creates a droidstubs module that creates stubs source files from the given full source @@ -1408,8 +1321,6 @@ func (module *SdkLibrary) InitSdkLibraryProperties() { &module.protoProperties, ) - module.initSdkLibraryComponent(&module.ModuleBase) - module.properties.Installable = proptools.BoolPtr(true) module.deviceProperties.IsSDKLibrary = true } @@ -1658,8 +1569,7 @@ func (module *sdkLibraryImport) createJavaImportForStubs(mctx android.Defaultabl // The imports are preferred if the java_sdk_library_import is preferred. props.Prefer = proptools.BoolPtr(module.prebuilt.Prefer()) - - mctx.CreateModule(ImportFactory, &props, module.sdkComponentPropertiesForChildLibrary()) + mctx.CreateModule(ImportFactory, &props) } func (module *sdkLibraryImport) createPrebuiltStubsSources(mctx android.DefaultableHookContext, apiScope *apiScope, scopeProperties *sdkLibraryScopeProperties) {