Loading android/config.go +0 −11 Original line number Diff line number Diff line Loading @@ -1979,17 +1979,6 @@ func (c *config) SetBuildFromTextStub(b bool) { c.productVariables.Build_from_text_stub = boolPtr(b) } func (c *config) SetApiLibraries(libs []string) { c.apiLibraries = make(map[string]struct{}) for _, lib := range libs { c.apiLibraries[lib] = struct{}{} } } func (c *config) GetApiLibraries() map[string]struct{} { return c.apiLibraries } func (c *deviceConfig) CheckVendorSeappViolations() bool { return Bool(c.config.productVariables.CheckVendorSeappViolations) } Loading apex/apex_test.go +0 −6 Original line number Diff line number Diff line Loading @@ -10016,9 +10016,6 @@ func TestApexLintBcpFragmentSdkLibDeps(t *testing.T) { java.PrepareForTestWithJavaSdkLibraryFiles, java.PrepareForTestWithJacocoInstrumentation, java.FixtureWithLastReleaseApis("foo"), android.FixtureModifyConfig(func(config android.Config) { config.SetApiLibraries([]string{"foo"}) }), android.FixtureMergeMockFs(fs), ).RunTestWithBp(t, bp) Loading Loading @@ -11602,9 +11599,6 @@ func TestAconfifDeclarationsValidation(t *testing.T) { prepareForApexTest, java.PrepareForTestWithJavaSdkLibraryFiles, java.FixtureWithLastReleaseApis("foo"), android.FixtureModifyConfig(func(config android.Config) { config.SetApiLibraries([]string{"foo"}) }), ).RunTestWithBp(t, ` java_library { name: "baz-java-lib", Loading java/core-libraries/Android.bp +9 −159 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ java_defaults { } java_library { name: "core.current.stubs.from-source", name: "core.current.stubs", defaults: [ "core.current.stubs.defaults", ], Loading @@ -52,8 +52,12 @@ java_library { ], } // Used for bootstrapping ART system modules java_api_library { name: "core.current.stubs.from-text", defaults: [ "core.current.stubs.defaults", ], api_surface: "core", api_contributions: [ "art.module.public.api.stubs.source.api.contribution", Loading @@ -68,27 +72,7 @@ java_api_library { } java_library { name: "core.current.stubs", defaults: [ "core.current.stubs.defaults", ], static_libs: [ "core.current.stubs.from-source", ], product_variables: { build_from_text_stub: { static_libs: [ "core.current.stubs.from-text", ], exclude_static_libs: [ "core.current.stubs.from-source", ], }, }, } java_library { name: "core.current.stubs.exportable.from-source", name: "core.current.stubs.exportable", defaults: [ "core.current.stubs.defaults", ], Loading @@ -103,16 +87,6 @@ java_library { }, } 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. // Loading Loading @@ -200,26 +174,6 @@ java_library { defaults: [ "core.module_lib.stubs.defaults", ], static_libs: [ "core.module_lib.stubs.from-source", ], product_variables: { build_from_text_stub: { static_libs: [ "core.module_lib.stubs.from-text", ], exclude_static_libs: [ "core.module_lib.stubs.from-source", ], }, }, } java_library { name: "core.module_lib.stubs.from-source", defaults: [ "core.module_lib.stubs.defaults", ], static_libs: [ "art.module.public.api.stubs.module_lib", Loading @@ -231,27 +185,6 @@ java_library { ], } java_api_library { name: "core.module_lib.stubs.from-text", api_surface: "module-lib", api_contributions: [ "art.module.public.api.stubs.source.api.contribution", "art.module.public.api.stubs.source.system.api.contribution", "art.module.public.api.stubs.source.module_lib.api.contribution", // Add the module-lib correspondence when Conscrypt or i18N module // provides @SystemApi(MODULE_LIBRARIES). Currently, assume that only ART module provides // @SystemApi(MODULE_LIBRARIES). "conscrypt.module.public.api.stubs.source.api.contribution", "i18n.module.public.api.stubs.source.api.contribution", ], libs: [ "stub-annotations", ], visibility: ["//visibility:private"], stubs_type: "everything", } // Produces a dist file that is used by the // prebuilts/sdk/update_prebuilts.py script to update the prebuilts/sdk // directory. Loading Loading @@ -311,7 +244,7 @@ core_platform_visibility = ["//visibility:public"] // API annotations are available to the dex tools that enable enforcement of runtime // accessibility. b/119068555 java_library { name: "legacy.core.platform.api.stubs.from-source", name: "legacy.core.platform.api.stubs", visibility: core_platform_visibility, defaults: [ "core.platform.api.stubs.defaults", Loading @@ -324,7 +257,7 @@ java_library { } java_library { name: "legacy.core.platform.api.stubs.exportable.from-source", name: "legacy.core.platform.api.stubs.exportable", visibility: core_platform_visibility, defaults: [ "core.platform.api.stubs.defaults", Loading @@ -348,53 +281,6 @@ java_defaults { ], } java_api_library { name: "legacy.core.platform.api.stubs.from-text", api_surface: "core_platform", defaults: [ "android_core_platform_stubs_current_contributions", ], api_contributions: [ "legacy.i18n.module.platform.api.stubs.source.api.contribution", ], libs: [ "stub-annotations", ], stubs_type: "everything", } java_library { name: "legacy.core.platform.api.stubs", visibility: core_platform_visibility, defaults: [ "core.platform.api.stubs.defaults", ], static_libs: [ "legacy.core.platform.api.stubs.from-source", ], product_variables: { build_from_text_stub: { static_libs: [ "legacy.core.platform.api.stubs.from-text", ], exclude_static_libs: [ "legacy.core.platform.api.stubs.from-source", ], }, }, } 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, Loading Loading @@ -424,7 +310,7 @@ java_library { } java_library { name: "stable.core.platform.api.stubs.from-source", name: "stable.core.platform.api.stubs", visibility: core_platform_visibility, defaults: [ "core.platform.api.stubs.defaults", Loading @@ -437,42 +323,6 @@ java_library { ], } java_api_library { name: "stable.core.platform.api.stubs.from-text", api_surface: "core_platform", defaults: [ "android_core_platform_stubs_current_contributions", ], api_contributions: [ "stable.i18n.module.platform.api.stubs.source.api.contribution", ], libs: [ "stub-annotations", ], stubs_type: "everything", } java_library { name: "stable.core.platform.api.stubs", visibility: core_platform_visibility, defaults: [ "core.platform.api.stubs.defaults", ], static_libs: [ "stable.core.platform.api.stubs.from-source", ], product_variables: { build_from_text_stub: { static_libs: [ "stable.core.platform.api.stubs.from-text", ], exclude_static_libs: [ "stable.core.platform.api.stubs.from-source", ], }, }, } // Same as stable.core.platform.api.stubs, but android annotations are // stripped. This is used by the Java toolchain, while the annotated stub is to // be used by Kotlin one. Loading java/java.go +55 −72 Original line number Diff line number Diff line Loading @@ -432,7 +432,6 @@ var ( r8LibraryJarTag = dependencyTag{name: "r8-libraryjar", runtimeLinked: true} syspropPublicStubDepTag = dependencyTag{name: "sysprop public stub"} javaApiContributionTag = dependencyTag{name: "java-api-contribution"} depApiSrcsTag = dependencyTag{name: "dep-api-srcs"} aconfigDeclarationTag = dependencyTag{name: "aconfig-declaration"} jniInstallTag = dependencyTag{name: "jni install", runtimeLinked: true, installable: true} binaryInstallTag = dependencyTag{name: "binary install", runtimeLinked: true, installable: true} Loading Loading @@ -2005,12 +2004,6 @@ type JavaApiLibraryProperties struct { // merge zipped after metalava invocation Static_libs []string // Java Api library to provide the full API surface stub jar file. // If this property is set, the stub jar of this module is created by // extracting the compiled class files provided by the // full_api_surface_stub module. Full_api_surface_stub *string // Version of previously released API file for compatibility check. Previous_api *string `android:"path"` Loading Loading @@ -2043,6 +2036,15 @@ type JavaApiLibraryProperties struct { // List of hard coded filegroups containing Metalava config files that are passed to every // Metalava invocation that this module performs. See addMetalavaConfigFilesToCmd. ConfigFiles []string `android:"path" blueprint:"mutated"` // If not blank, set to the version of the sdk to compile against. // Defaults to an empty string, which compiles the module against the private platform APIs. // Values are of one of the following forms: // 1) numerical API level, "current", "none", or "core_platform" // 2) An SDK kind with an API level: "<sdk kind>_<API level>" // See build/soong/android/sdk_version.go for the complete and up to date list of SDK kinds. // If the SDK kind is empty, it will be set to public. Sdk_version *string } func ApiLibraryFactory() android.Module { Loading Loading @@ -2141,40 +2143,6 @@ func (al *ApiLibrary) addValidation(ctx android.ModuleContext, cmd *android.Rule } } // This method extracts the stub class files from the stub jar file provided // from full_api_surface_stub module instead of compiling the srcjar generated from invoking metalava. // This method is used because metalava can generate compilable from-text stubs only when // the codebase encompasses all classes listed in the input API text file, and a class can extend // a class that is not within the same API domain. func (al *ApiLibrary) extractApiSrcs(ctx android.ModuleContext, rule *android.RuleBuilder, stubsDir android.OptionalPath, fullApiSurfaceStubJar android.Path) { classFilesList := android.PathForModuleOut(ctx, "metalava", "classes.txt") unzippedSrcJarDir := android.PathForModuleOut(ctx, "metalava", "unzipDir") rule.Command(). BuiltTool("list_files"). Text(stubsDir.String()). FlagWithOutput("--out ", classFilesList). FlagWithArg("--extensions ", ".java"). FlagWithArg("--root ", unzippedSrcJarDir.String()). Flag("--classes") rule.Command(). Text("unzip"). Flag("-q"). Input(fullApiSurfaceStubJar). FlagWithArg("-d ", unzippedSrcJarDir.String()) rule.Command(). BuiltTool("soong_zip"). Flag("-jar"). Flag("-write_if_changed"). Flag("-ignore_missing_files"). Flag("-quiet"). FlagWithArg("-C ", unzippedSrcJarDir.String()). FlagWithInput("-l ", classFilesList). FlagWithOutput("-o ", al.stubsJarWithoutStaticLibs) } func (al *ApiLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { apiContributions := al.properties.Api_contributions addValidations := !ctx.Config().IsEnvTrue("DISABLE_STUB_VALIDATION") && Loading @@ -2201,14 +2169,18 @@ func (al *ApiLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { } } } ctx.AddVariationDependencies(nil, libTag, al.properties.Libs...) ctx.AddVariationDependencies(nil, staticLibTag, al.properties.Static_libs...) if al.properties.Full_api_surface_stub != nil { ctx.AddVariationDependencies(nil, depApiSrcsTag, String(al.properties.Full_api_surface_stub)) if ctx.Device() { sdkDep := decodeSdkDep(ctx, android.SdkContext(al)) if sdkDep.useModule { ctx.AddVariationDependencies(nil, systemModulesTag, sdkDep.systemModules) ctx.AddVariationDependencies(nil, libTag, sdkDep.classpath...) ctx.AddVariationDependencies(nil, bootClasspathTag, sdkDep.bootclasspath...) } if al.properties.System_modules != nil { ctx.AddVariationDependencies(nil, systemModulesTag, String(al.properties.System_modules)) } ctx.AddVariationDependencies(nil, libTag, al.properties.Libs...) ctx.AddVariationDependencies(nil, staticLibTag, al.properties.Static_libs...) for _, aconfigDeclarationsName := range al.properties.Aconfig_declarations { ctx.AddDependency(ctx.Module(), aconfigDeclarationTag, aconfigDeclarationsName) } Loading Loading @@ -2264,8 +2236,8 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { var srcFilesInfo []JavaApiImportInfo var classPaths android.Paths var bootclassPaths android.Paths var staticLibs android.Paths var depApiSrcsStubsJar android.Path var systemModulesPaths android.Paths ctx.VisitDirectDeps(func(dep android.Module) { tag := ctx.OtherModuleDependencyTag(dep) Loading @@ -2279,12 +2251,12 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { case libTag: provider, _ := android.OtherModuleProvider(ctx, dep, JavaInfoProvider) classPaths = append(classPaths, provider.HeaderJars...) case bootClasspathTag: provider, _ := android.OtherModuleProvider(ctx, dep, JavaInfoProvider) bootclassPaths = append(bootclassPaths, provider.HeaderJars...) case staticLibTag: provider, _ := android.OtherModuleProvider(ctx, dep, JavaInfoProvider) staticLibs = append(staticLibs, provider.HeaderJars...) case depApiSrcsTag: provider, _ := android.OtherModuleProvider(ctx, dep, JavaInfoProvider) depApiSrcsStubsJar = provider.HeaderJars[0] case systemModulesTag: module := dep.(SystemModulesProvider) systemModulesPaths = append(systemModulesPaths, module.HeaderJars()...) Loading Loading @@ -2319,7 +2291,10 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { configFiles := android.PathsForModuleSrc(ctx, al.properties.ConfigFiles) cmd := metalavaStubCmd(ctx, rule, srcFiles, homeDir, systemModulesPaths, configFiles) combinedPaths := append(([]android.Path)(nil), systemModulesPaths...) combinedPaths = append(combinedPaths, classPaths...) combinedPaths = append(combinedPaths, bootclassPaths...) cmd := metalavaStubCmd(ctx, rule, srcFiles, homeDir, combinedPaths, configFiles) al.stubsFlags(ctx, cmd, stubsDir) Loading @@ -2337,9 +2312,6 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { al.stubsJarWithoutStaticLibs = android.PathForModuleOut(ctx, "metalava", "stubs.jar") al.stubsJar = android.PathForModuleOut(ctx, ctx.ModuleName(), fmt.Sprintf("%s.jar", ctx.ModuleName())) if depApiSrcsStubsJar != nil { al.extractApiSrcs(ctx, rule, stubsDir, depApiSrcsStubsJar) } rule.Command(). BuiltTool("soong_zip"). Flag("-write_if_changed"). Loading @@ -2350,18 +2322,17 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { rule.Build("metalava", "metalava merged text") if depApiSrcsStubsJar == nil { var flags javaBuilderFlags flags.javaVersion = getStubsJavaVersion() flags.javacFlags = strings.Join(al.properties.Javacflags, " ") flags.classpath = classpath(classPaths) flags.bootClasspath = classpath(systemModulesPaths) javacFlags := javaBuilderFlags{ javaVersion: getStubsJavaVersion(), javacFlags: strings.Join(al.properties.Javacflags, " "), classpath: classpath(classPaths), bootClasspath: classpath(append(systemModulesPaths, bootclassPaths...)), } annoSrcJar := android.PathForModuleOut(ctx, ctx.ModuleName(), "anno.srcjar") TransformJavaToClasses(ctx, al.stubsJarWithoutStaticLibs, 0, android.Paths{}, android.Paths{al.stubsSrcJar}, annoSrcJar, flags, android.Paths{}) } android.Paths{al.stubsSrcJar}, annoSrcJar, javacFlags, android.Paths{}) builder := android.NewRuleBuilder(pctx, ctx) builder.Command(). Loading @@ -2373,7 +2344,7 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { // compile stubs to .dex for hiddenapi processing dexParams := &compileDexParams{ flags: javaBuilderFlags{}, flags: javacFlags, sdkVersion: al.SdkVersion(ctx), minSdkVersion: al.MinSdkVersion(ctx), classesJar: al.stubsJar, Loading Loading @@ -2409,14 +2380,28 @@ func (al *ApiLibrary) ClassLoaderContexts() dexpreopt.ClassLoaderContextMap { return nil } // java_api_library constitutes the sdk, and does not build against one // Most java_api_library constitues the sdk, but there are some java_api_library that // does not contribute to the api surface. Such modules are allowed to set sdk_version // other than "none" func (al *ApiLibrary) SdkVersion(ctx android.EarlyModuleContext) android.SdkSpec { return android.SdkSpecNone return android.SdkSpecFrom(ctx, proptools.String(al.properties.Sdk_version)) } // java_api_library is always at "current". Return FutureApiLevel func (al *ApiLibrary) MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel { return android.FutureApiLevel return al.SdkVersion(ctx).ApiLevel } func (al *ApiLibrary) ReplaceMaxSdkVersionPlaceholder(ctx android.EarlyModuleContext) android.ApiLevel { return al.SdkVersion(ctx).ApiLevel } func (al *ApiLibrary) SystemModules() string { return proptools.String(al.properties.System_modules) } func (al *ApiLibrary) TargetSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel { return al.SdkVersion(ctx).ApiLevel } func (al *ApiLibrary) IDEInfo(i *android.IdeInfo) { Loading @@ -2434,9 +2419,6 @@ func (al *ApiLibrary) ideDeps() []string { if al.properties.System_modules != nil { ret = append(ret, proptools.String(al.properties.System_modules)) } if al.properties.Full_api_surface_stub != nil { ret = append(ret, proptools.String(al.properties.Full_api_surface_stub)) } // Other non java_library dependencies like java_api_contribution are ignored for now. return ret } Loading @@ -2444,6 +2426,7 @@ func (al *ApiLibrary) ideDeps() []string { // implement the following interfaces for hiddenapi processing var _ hiddenAPIModule = (*ApiLibrary)(nil) var _ UsesLibraryDependency = (*ApiLibrary)(nil) var _ android.SdkContext = (*ApiLibrary)(nil) // implement the following interface for IDE completion. var _ android.IDEInfo = (*ApiLibrary)(nil) Loading java/java_test.go +5 −71 Original line number Diff line number Diff line Loading @@ -1342,12 +1342,12 @@ func TestJavaLibraryWithSystemModules(t *testing.T) { } `) checkBootClasspathForSystemModule(t, ctx, "lib-with-source-system-modules", "/source-jar.jar") checkBootClasspathForLibWithSystemModule(t, ctx, "lib-with-source-system-modules", "/source-jar.jar") checkBootClasspathForSystemModule(t, ctx, "lib-with-prebuilt-system-modules", "/prebuilt-jar.jar") checkBootClasspathForLibWithSystemModule(t, ctx, "lib-with-prebuilt-system-modules", "/prebuilt-jar.jar") } func checkBootClasspathForSystemModule(t *testing.T, ctx *android.TestContext, moduleName string, expectedSuffix string) { func checkBootClasspathForLibWithSystemModule(t *testing.T, ctx *android.TestContext, moduleName string, expectedSuffix string) { javacRule := ctx.ModuleForTests(moduleName, "android_common").Rule("javac") bootClasspath := javacRule.Args["bootClasspath"] if strings.HasPrefix(bootClasspath, "--system ") && strings.HasSuffix(bootClasspath, expectedSuffix) { Loading Loading @@ -2256,61 +2256,6 @@ func TestJavaApiLibraryStaticLibsLink(t *testing.T) { } } func TestJavaApiLibraryFullApiSurfaceStub(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "current.txt", api_surface: "public", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "current.txt", api_surface: "public", } ` lib_bp_a := ` java_api_library { name: "lib1", api_surface: "public", api_contributions: ["foo1", "foo2"], stubs_type: "everything", } ` ctx := android.GroupFixturePreparers( prepareForJavaTest, android.FixtureMergeMockFs( map[string][]byte{ "a/Android.bp": []byte(provider_bp_a), "b/Android.bp": []byte(provider_bp_b), "c/Android.bp": []byte(lib_bp_a), }, ), android.FixtureMergeEnv( map[string]string{ "DISABLE_STUB_VALIDATION": "true", }, ), ).RunTestWithBp(t, ` java_api_library { name: "bar1", api_surface: "public", api_contributions: ["foo1"], full_api_surface_stub: "lib1", stubs_type: "everything", } `) m := ctx.ModuleForTests("bar1", "android_common") manifest := m.Output("metalava.sbox.textproto") sboxProto := android.RuleBuilderSboxProtoForTests(t, ctx.TestContext, manifest) manifestCommand := sboxProto.Commands[0].GetCommand() android.AssertStringDoesContain(t, "Command expected to contain full_api_surface_stub output jar", manifestCommand, "lib1.jar") } func TestTransitiveSrcFiles(t *testing.T) { ctx, _ := testJava(t, ` java_library { Loading Loading @@ -2511,9 +2456,6 @@ func TestSdkLibraryProvidesSystemModulesToApiLibrary(t *testing.T) { prepareForJavaTest, PrepareForTestWithJavaSdkLibraryFiles, FixtureWithLastReleaseApis("foo"), android.FixtureModifyConfig(func(config android.Config) { config.SetApiLibraries([]string{"foo"}) }), android.FixtureMergeMockFs( map[string][]byte{ "A.java": nil, Loading @@ -2534,12 +2476,8 @@ func TestSdkLibraryProvidesSystemModulesToApiLibrary(t *testing.T) { system_modules: "baz", } `) m := result.ModuleForTests(apiScopePublic.apiLibraryModuleName("foo"), "android_common") manifest := m.Output("metalava.sbox.textproto") sboxProto := android.RuleBuilderSboxProtoForTests(t, result.TestContext, manifest) manifestCommand := sboxProto.Commands[0].GetCommand() classPathFlag := "--classpath __SBOX_SANDBOX_DIR__/out/soong/.intermediates/bar/android_common/turbine-combined/bar.jar" android.AssertStringDoesContain(t, "command expected to contain classpath flag", manifestCommand, classPathFlag) checkBootClasspathForLibWithSystemModule(t, result.TestContext, apiScopePublic.apiLibraryModuleName("foo"), "/bar.jar") } func TestApiLibraryDroidstubsDependency(t *testing.T) { Loading @@ -2547,9 +2485,6 @@ func TestApiLibraryDroidstubsDependency(t *testing.T) { prepareForJavaTest, PrepareForTestWithJavaSdkLibraryFiles, FixtureWithLastReleaseApis("foo"), android.FixtureModifyConfig(func(config android.Config) { config.SetApiLibraries([]string{"foo"}) }), android.FixtureMergeMockFs( map[string][]byte{ "A.java": nil, Loading Loading @@ -2598,7 +2533,6 @@ func TestDisableFromTextStubForCoverageBuild(t *testing.T) { PrepareForTestWithJacocoInstrumentation, FixtureWithLastReleaseApis("foo"), android.FixtureModifyConfig(func(config android.Config) { config.SetApiLibraries([]string{"foo"}) config.SetBuildFromTextStub(true) }), android.FixtureModifyEnv(func(env map[string]string) { Loading Loading
android/config.go +0 −11 Original line number Diff line number Diff line Loading @@ -1979,17 +1979,6 @@ func (c *config) SetBuildFromTextStub(b bool) { c.productVariables.Build_from_text_stub = boolPtr(b) } func (c *config) SetApiLibraries(libs []string) { c.apiLibraries = make(map[string]struct{}) for _, lib := range libs { c.apiLibraries[lib] = struct{}{} } } func (c *config) GetApiLibraries() map[string]struct{} { return c.apiLibraries } func (c *deviceConfig) CheckVendorSeappViolations() bool { return Bool(c.config.productVariables.CheckVendorSeappViolations) } Loading
apex/apex_test.go +0 −6 Original line number Diff line number Diff line Loading @@ -10016,9 +10016,6 @@ func TestApexLintBcpFragmentSdkLibDeps(t *testing.T) { java.PrepareForTestWithJavaSdkLibraryFiles, java.PrepareForTestWithJacocoInstrumentation, java.FixtureWithLastReleaseApis("foo"), android.FixtureModifyConfig(func(config android.Config) { config.SetApiLibraries([]string{"foo"}) }), android.FixtureMergeMockFs(fs), ).RunTestWithBp(t, bp) Loading Loading @@ -11602,9 +11599,6 @@ func TestAconfifDeclarationsValidation(t *testing.T) { prepareForApexTest, java.PrepareForTestWithJavaSdkLibraryFiles, java.FixtureWithLastReleaseApis("foo"), android.FixtureModifyConfig(func(config android.Config) { config.SetApiLibraries([]string{"foo"}) }), ).RunTestWithBp(t, ` java_library { name: "baz-java-lib", Loading
java/core-libraries/Android.bp +9 −159 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ java_defaults { } java_library { name: "core.current.stubs.from-source", name: "core.current.stubs", defaults: [ "core.current.stubs.defaults", ], Loading @@ -52,8 +52,12 @@ java_library { ], } // Used for bootstrapping ART system modules java_api_library { name: "core.current.stubs.from-text", defaults: [ "core.current.stubs.defaults", ], api_surface: "core", api_contributions: [ "art.module.public.api.stubs.source.api.contribution", Loading @@ -68,27 +72,7 @@ java_api_library { } java_library { name: "core.current.stubs", defaults: [ "core.current.stubs.defaults", ], static_libs: [ "core.current.stubs.from-source", ], product_variables: { build_from_text_stub: { static_libs: [ "core.current.stubs.from-text", ], exclude_static_libs: [ "core.current.stubs.from-source", ], }, }, } java_library { name: "core.current.stubs.exportable.from-source", name: "core.current.stubs.exportable", defaults: [ "core.current.stubs.defaults", ], Loading @@ -103,16 +87,6 @@ java_library { }, } 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. // Loading Loading @@ -200,26 +174,6 @@ java_library { defaults: [ "core.module_lib.stubs.defaults", ], static_libs: [ "core.module_lib.stubs.from-source", ], product_variables: { build_from_text_stub: { static_libs: [ "core.module_lib.stubs.from-text", ], exclude_static_libs: [ "core.module_lib.stubs.from-source", ], }, }, } java_library { name: "core.module_lib.stubs.from-source", defaults: [ "core.module_lib.stubs.defaults", ], static_libs: [ "art.module.public.api.stubs.module_lib", Loading @@ -231,27 +185,6 @@ java_library { ], } java_api_library { name: "core.module_lib.stubs.from-text", api_surface: "module-lib", api_contributions: [ "art.module.public.api.stubs.source.api.contribution", "art.module.public.api.stubs.source.system.api.contribution", "art.module.public.api.stubs.source.module_lib.api.contribution", // Add the module-lib correspondence when Conscrypt or i18N module // provides @SystemApi(MODULE_LIBRARIES). Currently, assume that only ART module provides // @SystemApi(MODULE_LIBRARIES). "conscrypt.module.public.api.stubs.source.api.contribution", "i18n.module.public.api.stubs.source.api.contribution", ], libs: [ "stub-annotations", ], visibility: ["//visibility:private"], stubs_type: "everything", } // Produces a dist file that is used by the // prebuilts/sdk/update_prebuilts.py script to update the prebuilts/sdk // directory. Loading Loading @@ -311,7 +244,7 @@ core_platform_visibility = ["//visibility:public"] // API annotations are available to the dex tools that enable enforcement of runtime // accessibility. b/119068555 java_library { name: "legacy.core.platform.api.stubs.from-source", name: "legacy.core.platform.api.stubs", visibility: core_platform_visibility, defaults: [ "core.platform.api.stubs.defaults", Loading @@ -324,7 +257,7 @@ java_library { } java_library { name: "legacy.core.platform.api.stubs.exportable.from-source", name: "legacy.core.platform.api.stubs.exportable", visibility: core_platform_visibility, defaults: [ "core.platform.api.stubs.defaults", Loading @@ -348,53 +281,6 @@ java_defaults { ], } java_api_library { name: "legacy.core.platform.api.stubs.from-text", api_surface: "core_platform", defaults: [ "android_core_platform_stubs_current_contributions", ], api_contributions: [ "legacy.i18n.module.platform.api.stubs.source.api.contribution", ], libs: [ "stub-annotations", ], stubs_type: "everything", } java_library { name: "legacy.core.platform.api.stubs", visibility: core_platform_visibility, defaults: [ "core.platform.api.stubs.defaults", ], static_libs: [ "legacy.core.platform.api.stubs.from-source", ], product_variables: { build_from_text_stub: { static_libs: [ "legacy.core.platform.api.stubs.from-text", ], exclude_static_libs: [ "legacy.core.platform.api.stubs.from-source", ], }, }, } 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, Loading Loading @@ -424,7 +310,7 @@ java_library { } java_library { name: "stable.core.platform.api.stubs.from-source", name: "stable.core.platform.api.stubs", visibility: core_platform_visibility, defaults: [ "core.platform.api.stubs.defaults", Loading @@ -437,42 +323,6 @@ java_library { ], } java_api_library { name: "stable.core.platform.api.stubs.from-text", api_surface: "core_platform", defaults: [ "android_core_platform_stubs_current_contributions", ], api_contributions: [ "stable.i18n.module.platform.api.stubs.source.api.contribution", ], libs: [ "stub-annotations", ], stubs_type: "everything", } java_library { name: "stable.core.platform.api.stubs", visibility: core_platform_visibility, defaults: [ "core.platform.api.stubs.defaults", ], static_libs: [ "stable.core.platform.api.stubs.from-source", ], product_variables: { build_from_text_stub: { static_libs: [ "stable.core.platform.api.stubs.from-text", ], exclude_static_libs: [ "stable.core.platform.api.stubs.from-source", ], }, }, } // Same as stable.core.platform.api.stubs, but android annotations are // stripped. This is used by the Java toolchain, while the annotated stub is to // be used by Kotlin one. Loading
java/java.go +55 −72 Original line number Diff line number Diff line Loading @@ -432,7 +432,6 @@ var ( r8LibraryJarTag = dependencyTag{name: "r8-libraryjar", runtimeLinked: true} syspropPublicStubDepTag = dependencyTag{name: "sysprop public stub"} javaApiContributionTag = dependencyTag{name: "java-api-contribution"} depApiSrcsTag = dependencyTag{name: "dep-api-srcs"} aconfigDeclarationTag = dependencyTag{name: "aconfig-declaration"} jniInstallTag = dependencyTag{name: "jni install", runtimeLinked: true, installable: true} binaryInstallTag = dependencyTag{name: "binary install", runtimeLinked: true, installable: true} Loading Loading @@ -2005,12 +2004,6 @@ type JavaApiLibraryProperties struct { // merge zipped after metalava invocation Static_libs []string // Java Api library to provide the full API surface stub jar file. // If this property is set, the stub jar of this module is created by // extracting the compiled class files provided by the // full_api_surface_stub module. Full_api_surface_stub *string // Version of previously released API file for compatibility check. Previous_api *string `android:"path"` Loading Loading @@ -2043,6 +2036,15 @@ type JavaApiLibraryProperties struct { // List of hard coded filegroups containing Metalava config files that are passed to every // Metalava invocation that this module performs. See addMetalavaConfigFilesToCmd. ConfigFiles []string `android:"path" blueprint:"mutated"` // If not blank, set to the version of the sdk to compile against. // Defaults to an empty string, which compiles the module against the private platform APIs. // Values are of one of the following forms: // 1) numerical API level, "current", "none", or "core_platform" // 2) An SDK kind with an API level: "<sdk kind>_<API level>" // See build/soong/android/sdk_version.go for the complete and up to date list of SDK kinds. // If the SDK kind is empty, it will be set to public. Sdk_version *string } func ApiLibraryFactory() android.Module { Loading Loading @@ -2141,40 +2143,6 @@ func (al *ApiLibrary) addValidation(ctx android.ModuleContext, cmd *android.Rule } } // This method extracts the stub class files from the stub jar file provided // from full_api_surface_stub module instead of compiling the srcjar generated from invoking metalava. // This method is used because metalava can generate compilable from-text stubs only when // the codebase encompasses all classes listed in the input API text file, and a class can extend // a class that is not within the same API domain. func (al *ApiLibrary) extractApiSrcs(ctx android.ModuleContext, rule *android.RuleBuilder, stubsDir android.OptionalPath, fullApiSurfaceStubJar android.Path) { classFilesList := android.PathForModuleOut(ctx, "metalava", "classes.txt") unzippedSrcJarDir := android.PathForModuleOut(ctx, "metalava", "unzipDir") rule.Command(). BuiltTool("list_files"). Text(stubsDir.String()). FlagWithOutput("--out ", classFilesList). FlagWithArg("--extensions ", ".java"). FlagWithArg("--root ", unzippedSrcJarDir.String()). Flag("--classes") rule.Command(). Text("unzip"). Flag("-q"). Input(fullApiSurfaceStubJar). FlagWithArg("-d ", unzippedSrcJarDir.String()) rule.Command(). BuiltTool("soong_zip"). Flag("-jar"). Flag("-write_if_changed"). Flag("-ignore_missing_files"). Flag("-quiet"). FlagWithArg("-C ", unzippedSrcJarDir.String()). FlagWithInput("-l ", classFilesList). FlagWithOutput("-o ", al.stubsJarWithoutStaticLibs) } func (al *ApiLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { apiContributions := al.properties.Api_contributions addValidations := !ctx.Config().IsEnvTrue("DISABLE_STUB_VALIDATION") && Loading @@ -2201,14 +2169,18 @@ func (al *ApiLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { } } } ctx.AddVariationDependencies(nil, libTag, al.properties.Libs...) ctx.AddVariationDependencies(nil, staticLibTag, al.properties.Static_libs...) if al.properties.Full_api_surface_stub != nil { ctx.AddVariationDependencies(nil, depApiSrcsTag, String(al.properties.Full_api_surface_stub)) if ctx.Device() { sdkDep := decodeSdkDep(ctx, android.SdkContext(al)) if sdkDep.useModule { ctx.AddVariationDependencies(nil, systemModulesTag, sdkDep.systemModules) ctx.AddVariationDependencies(nil, libTag, sdkDep.classpath...) ctx.AddVariationDependencies(nil, bootClasspathTag, sdkDep.bootclasspath...) } if al.properties.System_modules != nil { ctx.AddVariationDependencies(nil, systemModulesTag, String(al.properties.System_modules)) } ctx.AddVariationDependencies(nil, libTag, al.properties.Libs...) ctx.AddVariationDependencies(nil, staticLibTag, al.properties.Static_libs...) for _, aconfigDeclarationsName := range al.properties.Aconfig_declarations { ctx.AddDependency(ctx.Module(), aconfigDeclarationTag, aconfigDeclarationsName) } Loading Loading @@ -2264,8 +2236,8 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { var srcFilesInfo []JavaApiImportInfo var classPaths android.Paths var bootclassPaths android.Paths var staticLibs android.Paths var depApiSrcsStubsJar android.Path var systemModulesPaths android.Paths ctx.VisitDirectDeps(func(dep android.Module) { tag := ctx.OtherModuleDependencyTag(dep) Loading @@ -2279,12 +2251,12 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { case libTag: provider, _ := android.OtherModuleProvider(ctx, dep, JavaInfoProvider) classPaths = append(classPaths, provider.HeaderJars...) case bootClasspathTag: provider, _ := android.OtherModuleProvider(ctx, dep, JavaInfoProvider) bootclassPaths = append(bootclassPaths, provider.HeaderJars...) case staticLibTag: provider, _ := android.OtherModuleProvider(ctx, dep, JavaInfoProvider) staticLibs = append(staticLibs, provider.HeaderJars...) case depApiSrcsTag: provider, _ := android.OtherModuleProvider(ctx, dep, JavaInfoProvider) depApiSrcsStubsJar = provider.HeaderJars[0] case systemModulesTag: module := dep.(SystemModulesProvider) systemModulesPaths = append(systemModulesPaths, module.HeaderJars()...) Loading Loading @@ -2319,7 +2291,10 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { configFiles := android.PathsForModuleSrc(ctx, al.properties.ConfigFiles) cmd := metalavaStubCmd(ctx, rule, srcFiles, homeDir, systemModulesPaths, configFiles) combinedPaths := append(([]android.Path)(nil), systemModulesPaths...) combinedPaths = append(combinedPaths, classPaths...) combinedPaths = append(combinedPaths, bootclassPaths...) cmd := metalavaStubCmd(ctx, rule, srcFiles, homeDir, combinedPaths, configFiles) al.stubsFlags(ctx, cmd, stubsDir) Loading @@ -2337,9 +2312,6 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { al.stubsJarWithoutStaticLibs = android.PathForModuleOut(ctx, "metalava", "stubs.jar") al.stubsJar = android.PathForModuleOut(ctx, ctx.ModuleName(), fmt.Sprintf("%s.jar", ctx.ModuleName())) if depApiSrcsStubsJar != nil { al.extractApiSrcs(ctx, rule, stubsDir, depApiSrcsStubsJar) } rule.Command(). BuiltTool("soong_zip"). Flag("-write_if_changed"). Loading @@ -2350,18 +2322,17 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { rule.Build("metalava", "metalava merged text") if depApiSrcsStubsJar == nil { var flags javaBuilderFlags flags.javaVersion = getStubsJavaVersion() flags.javacFlags = strings.Join(al.properties.Javacflags, " ") flags.classpath = classpath(classPaths) flags.bootClasspath = classpath(systemModulesPaths) javacFlags := javaBuilderFlags{ javaVersion: getStubsJavaVersion(), javacFlags: strings.Join(al.properties.Javacflags, " "), classpath: classpath(classPaths), bootClasspath: classpath(append(systemModulesPaths, bootclassPaths...)), } annoSrcJar := android.PathForModuleOut(ctx, ctx.ModuleName(), "anno.srcjar") TransformJavaToClasses(ctx, al.stubsJarWithoutStaticLibs, 0, android.Paths{}, android.Paths{al.stubsSrcJar}, annoSrcJar, flags, android.Paths{}) } android.Paths{al.stubsSrcJar}, annoSrcJar, javacFlags, android.Paths{}) builder := android.NewRuleBuilder(pctx, ctx) builder.Command(). Loading @@ -2373,7 +2344,7 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { // compile stubs to .dex for hiddenapi processing dexParams := &compileDexParams{ flags: javaBuilderFlags{}, flags: javacFlags, sdkVersion: al.SdkVersion(ctx), minSdkVersion: al.MinSdkVersion(ctx), classesJar: al.stubsJar, Loading Loading @@ -2409,14 +2380,28 @@ func (al *ApiLibrary) ClassLoaderContexts() dexpreopt.ClassLoaderContextMap { return nil } // java_api_library constitutes the sdk, and does not build against one // Most java_api_library constitues the sdk, but there are some java_api_library that // does not contribute to the api surface. Such modules are allowed to set sdk_version // other than "none" func (al *ApiLibrary) SdkVersion(ctx android.EarlyModuleContext) android.SdkSpec { return android.SdkSpecNone return android.SdkSpecFrom(ctx, proptools.String(al.properties.Sdk_version)) } // java_api_library is always at "current". Return FutureApiLevel func (al *ApiLibrary) MinSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel { return android.FutureApiLevel return al.SdkVersion(ctx).ApiLevel } func (al *ApiLibrary) ReplaceMaxSdkVersionPlaceholder(ctx android.EarlyModuleContext) android.ApiLevel { return al.SdkVersion(ctx).ApiLevel } func (al *ApiLibrary) SystemModules() string { return proptools.String(al.properties.System_modules) } func (al *ApiLibrary) TargetSdkVersion(ctx android.EarlyModuleContext) android.ApiLevel { return al.SdkVersion(ctx).ApiLevel } func (al *ApiLibrary) IDEInfo(i *android.IdeInfo) { Loading @@ -2434,9 +2419,6 @@ func (al *ApiLibrary) ideDeps() []string { if al.properties.System_modules != nil { ret = append(ret, proptools.String(al.properties.System_modules)) } if al.properties.Full_api_surface_stub != nil { ret = append(ret, proptools.String(al.properties.Full_api_surface_stub)) } // Other non java_library dependencies like java_api_contribution are ignored for now. return ret } Loading @@ -2444,6 +2426,7 @@ func (al *ApiLibrary) ideDeps() []string { // implement the following interfaces for hiddenapi processing var _ hiddenAPIModule = (*ApiLibrary)(nil) var _ UsesLibraryDependency = (*ApiLibrary)(nil) var _ android.SdkContext = (*ApiLibrary)(nil) // implement the following interface for IDE completion. var _ android.IDEInfo = (*ApiLibrary)(nil) Loading
java/java_test.go +5 −71 Original line number Diff line number Diff line Loading @@ -1342,12 +1342,12 @@ func TestJavaLibraryWithSystemModules(t *testing.T) { } `) checkBootClasspathForSystemModule(t, ctx, "lib-with-source-system-modules", "/source-jar.jar") checkBootClasspathForLibWithSystemModule(t, ctx, "lib-with-source-system-modules", "/source-jar.jar") checkBootClasspathForSystemModule(t, ctx, "lib-with-prebuilt-system-modules", "/prebuilt-jar.jar") checkBootClasspathForLibWithSystemModule(t, ctx, "lib-with-prebuilt-system-modules", "/prebuilt-jar.jar") } func checkBootClasspathForSystemModule(t *testing.T, ctx *android.TestContext, moduleName string, expectedSuffix string) { func checkBootClasspathForLibWithSystemModule(t *testing.T, ctx *android.TestContext, moduleName string, expectedSuffix string) { javacRule := ctx.ModuleForTests(moduleName, "android_common").Rule("javac") bootClasspath := javacRule.Args["bootClasspath"] if strings.HasPrefix(bootClasspath, "--system ") && strings.HasSuffix(bootClasspath, expectedSuffix) { Loading Loading @@ -2256,61 +2256,6 @@ func TestJavaApiLibraryStaticLibsLink(t *testing.T) { } } func TestJavaApiLibraryFullApiSurfaceStub(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "current.txt", api_surface: "public", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "current.txt", api_surface: "public", } ` lib_bp_a := ` java_api_library { name: "lib1", api_surface: "public", api_contributions: ["foo1", "foo2"], stubs_type: "everything", } ` ctx := android.GroupFixturePreparers( prepareForJavaTest, android.FixtureMergeMockFs( map[string][]byte{ "a/Android.bp": []byte(provider_bp_a), "b/Android.bp": []byte(provider_bp_b), "c/Android.bp": []byte(lib_bp_a), }, ), android.FixtureMergeEnv( map[string]string{ "DISABLE_STUB_VALIDATION": "true", }, ), ).RunTestWithBp(t, ` java_api_library { name: "bar1", api_surface: "public", api_contributions: ["foo1"], full_api_surface_stub: "lib1", stubs_type: "everything", } `) m := ctx.ModuleForTests("bar1", "android_common") manifest := m.Output("metalava.sbox.textproto") sboxProto := android.RuleBuilderSboxProtoForTests(t, ctx.TestContext, manifest) manifestCommand := sboxProto.Commands[0].GetCommand() android.AssertStringDoesContain(t, "Command expected to contain full_api_surface_stub output jar", manifestCommand, "lib1.jar") } func TestTransitiveSrcFiles(t *testing.T) { ctx, _ := testJava(t, ` java_library { Loading Loading @@ -2511,9 +2456,6 @@ func TestSdkLibraryProvidesSystemModulesToApiLibrary(t *testing.T) { prepareForJavaTest, PrepareForTestWithJavaSdkLibraryFiles, FixtureWithLastReleaseApis("foo"), android.FixtureModifyConfig(func(config android.Config) { config.SetApiLibraries([]string{"foo"}) }), android.FixtureMergeMockFs( map[string][]byte{ "A.java": nil, Loading @@ -2534,12 +2476,8 @@ func TestSdkLibraryProvidesSystemModulesToApiLibrary(t *testing.T) { system_modules: "baz", } `) m := result.ModuleForTests(apiScopePublic.apiLibraryModuleName("foo"), "android_common") manifest := m.Output("metalava.sbox.textproto") sboxProto := android.RuleBuilderSboxProtoForTests(t, result.TestContext, manifest) manifestCommand := sboxProto.Commands[0].GetCommand() classPathFlag := "--classpath __SBOX_SANDBOX_DIR__/out/soong/.intermediates/bar/android_common/turbine-combined/bar.jar" android.AssertStringDoesContain(t, "command expected to contain classpath flag", manifestCommand, classPathFlag) checkBootClasspathForLibWithSystemModule(t, result.TestContext, apiScopePublic.apiLibraryModuleName("foo"), "/bar.jar") } func TestApiLibraryDroidstubsDependency(t *testing.T) { Loading @@ -2547,9 +2485,6 @@ func TestApiLibraryDroidstubsDependency(t *testing.T) { prepareForJavaTest, PrepareForTestWithJavaSdkLibraryFiles, FixtureWithLastReleaseApis("foo"), android.FixtureModifyConfig(func(config android.Config) { config.SetApiLibraries([]string{"foo"}) }), android.FixtureMergeMockFs( map[string][]byte{ "A.java": nil, Loading Loading @@ -2598,7 +2533,6 @@ func TestDisableFromTextStubForCoverageBuild(t *testing.T) { PrepareForTestWithJacocoInstrumentation, FixtureWithLastReleaseApis("foo"), android.FixtureModifyConfig(func(config android.Config) { config.SetApiLibraries([]string{"foo"}) config.SetBuildFromTextStub(true) }), android.FixtureModifyEnv(func(env map[string]string) { Loading