diff options
Diffstat (limited to 'java')
| -rw-r--r-- | java/androidmk.go | 3 | ||||
| -rwxr-xr-x | java/app.go | 14 | ||||
| -rw-r--r-- | java/app_test.go | 10 | ||||
| -rw-r--r-- | java/base.go | 11 | ||||
| -rw-r--r-- | java/bootclasspath.go | 3 | ||||
| -rw-r--r-- | java/bootclasspath_fragment.go | 2 | ||||
| -rw-r--r-- | java/core-libraries/Android.bp | 60 | ||||
| -rw-r--r-- | java/core-libraries/jarjar-strip-annotations-rules.txt | 4 | ||||
| -rw-r--r-- | java/droidstubs.go | 36 | ||||
| -rw-r--r-- | java/droidstubs_test.go | 23 | ||||
| -rw-r--r-- | java/java.go | 45 | ||||
| -rw-r--r-- | java/java_resources.go | 42 | ||||
| -rw-r--r-- | java/lint.go | 18 | ||||
| -rw-r--r-- | java/platform_bootclasspath_test.go | 1 |
14 files changed, 229 insertions, 43 deletions
diff --git a/java/androidmk.go b/java/androidmk.go index 9f6269488..330e594bf 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -542,6 +542,9 @@ func (dstubs *Droidstubs) AndroidMkEntries() []android.AndroidMkEntries { if !outputFile.Valid() { outputFile = android.OptionalPathForPath(dstubs.apiFile) } + if !outputFile.Valid() { + outputFile = android.OptionalPathForPath(dstubs.apiVersionsXml) + } return []android.AndroidMkEntries{android.AndroidMkEntries{ Class: "JAVA_LIBRARIES", OutputFile: outputFile, diff --git a/java/app.go b/java/app.go index 7ff654424..2bb116ad6 100755 --- a/java/app.go +++ b/java/app.go @@ -298,10 +298,6 @@ func (a *AndroidApp) checkAppSdkVersions(ctx android.ModuleContext) { // If an updatable APK sets min_sdk_version, min_sdk_vesion of JNI libs should match with it. // This check is enforced for "updatable" APKs (including APK-in-APEX). -// b/155209650: until min_sdk_version is properly supported, use sdk_version instead. -// because, sdk_version is overridden by min_sdk_version (if set as smaller) -// and sdkLinkType is checked with dependencies so we can be sure that the whole dependency tree -// will meet the requirements. func (a *AndroidApp) checkJniLibsSdkVersion(ctx android.ModuleContext, minSdkVersion android.ApiLevel) { // It's enough to check direct JNI deps' sdk_version because all transitive deps from JNI deps are checked in cc.checkLinkType() ctx.VisitDirectDeps(func(m android.Module) { @@ -312,10 +308,10 @@ func (a *AndroidApp) checkJniLibsSdkVersion(ctx android.ModuleContext, minSdkVer // The domain of cc.sdk_version is "current" and <number> // We can rely on android.SdkSpec to convert it to <number> so that "current" is // handled properly regardless of sdk finalization. - jniSdkVersion, err := android.SdkSpecFrom(ctx, dep.SdkVersion()).EffectiveVersion(ctx) + jniSdkVersion, err := android.SdkSpecFrom(ctx, dep.MinSdkVersion()).EffectiveVersion(ctx) if err != nil || minSdkVersion.LessThan(jniSdkVersion) { - ctx.OtherModuleErrorf(dep, "sdk_version(%v) is higher than min_sdk_version(%v) of the containing android_app(%v)", - dep.SdkVersion(), minSdkVersion, ctx.ModuleName()) + ctx.OtherModuleErrorf(dep, "min_sdk_version(%v) is higher than min_sdk_version(%v) of the containing android_app(%v)", + dep.MinSdkVersion(), minSdkVersion, ctx.ModuleName()) return } @@ -841,6 +837,10 @@ func (a *AndroidApp) Updatable() bool { return Bool(a.appProperties.Updatable) } +func (a *AndroidApp) SetUpdatable(val bool) { + a.appProperties.Updatable = &val +} + func (a *AndroidApp) getCertString(ctx android.BaseModuleContext) string { certificate, overridden := ctx.DeviceConfig().OverrideCertificateFor(ctx.ModuleName()) if overridden { diff --git a/java/app_test.go b/java/app_test.go index 31cd697b7..c4ac4dfdb 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -427,7 +427,8 @@ func TestUpdatableApps_JniLibShouldBeBuiltAgainstMinSdkVersion(t *testing.T) { name: "libjni", stl: "none", system_shared_libs: [], - sdk_version: "29", + sdk_version: "current", + min_sdk_version: "29", } ` fs := map[string][]byte{ @@ -481,12 +482,13 @@ func TestUpdatableApps_ErrorIfJniLibDoesntSupportMinSdkVersion(t *testing.T) { name: "libjni", stl: "none", sdk_version: "current", + min_sdk_version: "current", } ` - testJavaError(t, `"libjni" .*: sdk_version\(current\) is higher than min_sdk_version\(29\)`, bp) + testJavaError(t, `"libjni" .*: min_sdk_version\(current\) is higher than min_sdk_version\(29\)`, bp) } -func TestUpdatableApps_ErrorIfDepSdkVersionIsHigher(t *testing.T) { +func TestUpdatableApps_ErrorIfDepMinSdkVersionIsHigher(t *testing.T) { bp := cc.GatherRequiredDepsForTest(android.Android) + ` android_app { name: "foo", @@ -503,6 +505,7 @@ func TestUpdatableApps_ErrorIfDepSdkVersionIsHigher(t *testing.T) { shared_libs: ["libbar"], system_shared_libs: [], sdk_version: "27", + min_sdk_version: "27", } cc_library { @@ -510,6 +513,7 @@ func TestUpdatableApps_ErrorIfDepSdkVersionIsHigher(t *testing.T) { stl: "none", system_shared_libs: [], sdk_version: "current", + min_sdk_version: "current", } ` testJavaError(t, `"libjni" .*: links "libbar" built against newer API version "current"`, bp) diff --git a/java/base.go b/java/base.go index 1e8095baa..0900daaae 100644 --- a/java/base.go +++ b/java/base.go @@ -1020,6 +1020,7 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { ctx.PropertyErrorf("common_srcs", "common_srcs must be .kt files") } + nonGeneratedSrcJars := srcFiles.FilterByExt(".srcjar") srcFiles = j.genSources(ctx, srcFiles, flags) // Collect javac flags only after computing the full set of srcFiles to @@ -1492,8 +1493,8 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { } j.linter.name = ctx.ModuleName() - j.linter.srcs = srcFiles - j.linter.srcJars = srcJars + j.linter.srcs = append(srcFiles, nonGeneratedSrcJars...) + j.linter.srcJars, _ = android.FilterPathList(srcJars, nonGeneratedSrcJars) j.linter.classpath = append(append(android.Paths(nil), flags.bootClasspath...), flags.classpath...) j.linter.classes = j.implementationJarFile j.linter.minSdkVersion = lintSDKVersion(j.MinSdkVersion(ctx)) @@ -1912,6 +1913,9 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { case bootClasspathTag: deps.bootClasspath = append(deps.bootClasspath, dep.HeaderJars...) case libTag, instrumentationForTag: + if _, ok := module.(*Plugin); ok { + ctx.ModuleErrorf("a java_plugin (%s) cannot be used as a libs dependency", otherName) + } deps.classpath = append(deps.classpath, dep.HeaderJars...) deps.dexClasspath = append(deps.dexClasspath, dep.HeaderJars...) deps.aidlIncludeDirs = append(deps.aidlIncludeDirs, dep.AidlIncludeDirs...) @@ -1920,6 +1924,9 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { case java9LibTag: deps.java9Classpath = append(deps.java9Classpath, dep.HeaderJars...) case staticLibTag: + if _, ok := module.(*Plugin); ok { + ctx.ModuleErrorf("a java_plugin (%s) cannot be used as a static_libs dependency", otherName) + } deps.classpath = append(deps.classpath, dep.HeaderJars...) deps.staticJars = append(deps.staticJars, dep.ImplementationJars...) deps.staticHeaderJars = append(deps.staticHeaderJars, dep.HeaderJars...) diff --git a/java/bootclasspath.go b/java/bootclasspath.go index 52ce77d46..f4cef7fa6 100644 --- a/java/bootclasspath.go +++ b/java/bootclasspath.go @@ -84,6 +84,9 @@ func addDependencyOntoApexModulePair(ctx android.BottomUpMutatorContext, apex st } } + target := ctx.Module().Target() + variations = append(variations, target.Variations()...) + addedDep := false if ctx.OtherModuleDependencyVariantExists(variations, name) { ctx.AddFarVariationDependencies(variations, tag, name) diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index c3a5d5f70..0345aadfd 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -273,7 +273,7 @@ func bootclasspathFragmentFactory() android.Module { android.InitApexModule(m) android.InitSdkAwareModule(m) initClasspathFragment(m, BOOTCLASSPATH) - android.InitAndroidArchModule(m, android.HostAndDeviceSupported, android.MultilibCommon) + android.InitAndroidArchModule(m, android.DeviceSupported, android.MultilibCommon) android.AddLoadHook(m, func(ctx android.LoadHookContext) { // If code coverage has been enabled for the framework then append the properties with diff --git a/java/core-libraries/Android.bp b/java/core-libraries/Android.bp index cf3974601..513c6061b 100644 --- a/java/core-libraries/Android.bp +++ b/java/core-libraries/Android.bp @@ -138,11 +138,29 @@ java_library { }, } +// Same as core-module-lib-stubs-for-system-modules, but android annotations are +// stripped. This is used by the Java toolchain, while the annotated stub is to +// be used by Kotlin one. +java_library { + name: "core-module-lib-stubs-for-system-modules-no-annotations", + visibility: ["//visibility:private"], + static_libs: [ + "core-module-lib-stubs-for-system-modules", + ], + sdk_version: "none", + system_modules: "none", + dist: { + dest: "system-modules/module-lib/core-for-system-modules-no-annotations.jar", + targets: dist_targets, + }, + jarjar_rules: "jarjar-strip-annotations-rules.txt", +} + // Used when compiling higher-level code with sdk_version "module_current" java_system_modules { name: "core-module-lib-stubs-system-modules", libs: [ - "core-module-lib-stubs-for-system-modules", + "core-module-lib-stubs-for-system-modules-no-annotations", ], visibility: ["//visibility:public"], } @@ -174,6 +192,24 @@ java_library { patch_module: "java.base", } +// Same as legacy.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. +java_library { + name: "legacy.core.platform.api.no.annotations.stubs", + visibility: core_platform_visibility, + hostdex: true, + compile_dex: true, + + sdk_version: "none", + system_modules: "none", + static_libs: [ + "legacy.core.platform.api.stubs", + ], + patch_module: "java.base", + jarjar_rules: "jarjar-strip-annotations-rules.txt", +} + java_library { name: "stable.core.platform.api.stubs", visibility: core_platform_visibility, @@ -191,12 +227,30 @@ java_library { patch_module: "java.base", } +// 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. +java_library { + name: "stable.core.platform.api.no.annotations.stubs", + visibility: core_platform_visibility, + hostdex: true, + compile_dex: true, + + sdk_version: "none", + system_modules: "none", + static_libs: [ + "stable.core.platform.api.stubs", + ], + patch_module: "java.base", + jarjar_rules: "jarjar-strip-annotations-rules.txt", +} + // Used when compiling higher-level code against *.core.platform.api.stubs. java_system_modules { name: "legacy-core-platform-api-stubs-system-modules", visibility: core_platform_visibility, libs: [ - "legacy.core.platform.api.stubs", + "legacy.core.platform.api.no.annotations.stubs", // This one is not on device but it's needed when javac compiles code // containing lambdas. "core-lambda-stubs-for-system-modules", @@ -212,7 +266,7 @@ java_system_modules { name: "stable-core-platform-api-stubs-system-modules", visibility: core_platform_visibility, libs: [ - "stable.core.platform.api.stubs", + "stable.core.platform.api.no.annotations.stubs", // This one is not on device but it's needed when javac compiles code // containing lambdas. "core-lambda-stubs-for-system-modules", diff --git a/java/core-libraries/jarjar-strip-annotations-rules.txt b/java/core-libraries/jarjar-strip-annotations-rules.txt new file mode 100644 index 000000000..a1c261b9a --- /dev/null +++ b/java/core-libraries/jarjar-strip-annotations-rules.txt @@ -0,0 +1,4 @@ +strip-annotation android.annotation.NotNull +strip-annotation android.annotation.Nullable +strip-annotation androidx.annotation.RecentlyNonNull +strip-annotation androidx.annotation.RecentlyNullable diff --git a/java/droidstubs.go b/java/droidstubs.go index 3b1f7c041..115388be5 100644 --- a/java/droidstubs.go +++ b/java/droidstubs.go @@ -135,6 +135,9 @@ type DroidstubsProperties struct { // if set to true, Metalava will allow framework SDK to contain API levels annotations. Api_levels_annotations_enabled *bool + // Apply the api levels database created by this module rather than generating one in this droidstubs. + Api_levels_module *string + // the dirs which Metalava extracts API levels annotations from. Api_levels_annotations_dirs []string @@ -234,6 +237,7 @@ func (d *Droidstubs) StubsSrcJar() android.Path { var metalavaMergeAnnotationsDirTag = dependencyTag{name: "metalava-merge-annotations-dir"} var metalavaMergeInclusionAnnotationsDirTag = dependencyTag{name: "metalava-merge-inclusion-annotations-dir"} var metalavaAPILevelsAnnotationsDirTag = dependencyTag{name: "metalava-api-levels-annotations-dir"} +var metalavaAPILevelsModuleTag = dependencyTag{name: "metalava-api-levels-module-tag"} func (d *Droidstubs) DepsMutator(ctx android.BottomUpMutatorContext) { d.Javadoc.addDeps(ctx) @@ -255,6 +259,10 @@ func (d *Droidstubs) DepsMutator(ctx android.BottomUpMutatorContext) { ctx.AddDependency(ctx.Module(), metalavaAPILevelsAnnotationsDirTag, apiLevelsAnnotationsDir) } } + + if d.properties.Api_levels_module != nil { + ctx.AddDependency(ctx.Module(), metalavaAPILevelsModuleTag, proptools.String(d.properties.Api_levels_module)) + } } func (d *Droidstubs) stubsFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, stubsDir android.OptionalPath) { @@ -365,21 +373,35 @@ func (d *Droidstubs) inclusionAnnotationsFlags(ctx android.ModuleContext, cmd *a } func (d *Droidstubs) apiLevelsAnnotationsFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand) { - if !Bool(d.properties.Api_levels_annotations_enabled) { - return + var apiVersions android.Path + if proptools.Bool(d.properties.Api_levels_annotations_enabled) { + d.apiLevelsGenerationFlags(ctx, cmd) + apiVersions = d.apiVersionsXml + } else { + ctx.VisitDirectDepsWithTag(metalavaAPILevelsModuleTag, func(m android.Module) { + if s, ok := m.(*Droidstubs); ok { + apiVersions = s.apiVersionsXml + } else { + ctx.PropertyErrorf("api_levels_module", + "module %q is not a droidstubs module", ctx.OtherModuleName(m)) + } + }) } + if apiVersions != nil { + cmd.FlagWithArg("--current-version ", ctx.Config().PlatformSdkVersion().String()) + cmd.FlagWithArg("--current-codename ", ctx.Config().PlatformSdkCodename()) + cmd.FlagWithInput("--apply-api-levels ", apiVersions) + } +} - d.apiVersionsXml = android.PathForModuleOut(ctx, "metalava", "api-versions.xml") - +func (d *Droidstubs) apiLevelsGenerationFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand) { if len(d.properties.Api_levels_annotations_dirs) == 0 { ctx.PropertyErrorf("api_levels_annotations_dirs", "has to be non-empty if api levels annotations was enabled!") } + d.apiVersionsXml = android.PathForModuleOut(ctx, "metalava", "api-versions.xml") cmd.FlagWithOutput("--generate-api-levels ", d.apiVersionsXml) - cmd.FlagWithInput("--apply-api-levels ", d.apiVersionsXml) - cmd.FlagWithArg("--current-version ", ctx.Config().PlatformSdkVersion().String()) - cmd.FlagWithArg("--current-codename ", ctx.Config().PlatformSdkCodename()) filename := proptools.StringDefault(d.properties.Api_levels_jar_filename, "android.jar") diff --git a/java/droidstubs_test.go b/java/droidstubs_test.go index 10d99f3a5..9fdfddeb1 100644 --- a/java/droidstubs_test.go +++ b/java/droidstubs_test.go @@ -46,6 +46,12 @@ func TestDroidstubs(t *testing.T) { api_levels_annotations_enabled: true, api_levels_jar_filename: "android.other.jar", } + + droidstubs { + name: "stubs-applying-api-versions", + srcs: ["bar-doc/a.java"], + api_levels_module: "bar-stubs-other", + } `, map[string][]byte{ "bar-doc/a.java": nil, @@ -53,26 +59,37 @@ func TestDroidstubs(t *testing.T) { testcases := []struct { moduleName string expectedJarFilename string + generate_xml bool high_mem bool }{ { moduleName: "bar-stubs", + generate_xml: true, expectedJarFilename: "android.jar", high_mem: false, }, { moduleName: "bar-stubs-other", + generate_xml: true, expectedJarFilename: "android.other.jar", high_mem: true, }, + { + moduleName: "stubs-applying-api-versions", + generate_xml: false, + }, } for _, c := range testcases { m := ctx.ModuleForTests(c.moduleName, "android_common") manifest := m.Output("metalava.sbox.textproto") sboxProto := android.RuleBuilderSboxProtoForTests(t, manifest) - expected := "--android-jar-pattern ./%/public/" + c.expectedJarFilename - if actual := String(sboxProto.Commands[0].Command); !strings.Contains(actual, expected) { - t.Errorf("For %q, expected metalava argument %q, but was not found %q", c.moduleName, expected, actual) + cmdline := String(sboxProto.Commands[0].Command) + android.AssertStringContainsEquals(t, "api-versions generation flag", cmdline, "--generate-api-levels", c.generate_xml) + if c.expectedJarFilename != "" { + expected := "--android-jar-pattern ./%/public/" + c.expectedJarFilename + if !strings.Contains(cmdline, expected) { + t.Errorf("For %q, expected metalava argument %q, but was not found %q", c.moduleName, expected, cmdline) + } } metalava := m.Rule("metalava") diff --git a/java/java.go b/java/java.go index 13f4c807e..079d4b9e7 100644 --- a/java/java.go +++ b/java/java.go @@ -2018,7 +2018,49 @@ func addCLCFromDep(ctx android.ModuleContext, depModule android.Module, } } +type javaResourcesAttributes struct { + Resources bazel.LabelListAttribute + Resource_strip_prefix *string +} + +func (m *Library) convertJavaResourcesAttributes(ctx android.TopDownMutatorContext) *javaResourcesAttributes { + var resources bazel.LabelList + var resourceStripPrefix *string + + if m.properties.Java_resources != nil { + resources.Append(android.BazelLabelForModuleSrc(ctx, m.properties.Java_resources)) + } + + //TODO(b/179889880) handle case where glob includes files outside package + resDeps := ResourceDirsToFiles( + ctx, + m.properties.Java_resource_dirs, + m.properties.Exclude_java_resource_dirs, + m.properties.Exclude_java_resources, + ) + + for i, resDep := range resDeps { + dir, files := resDep.dir, resDep.files + + resources.Append(bazel.MakeLabelList(android.RootToModuleRelativePaths(ctx, files))) + + // Bazel includes the relative path from the WORKSPACE root when placing the resource + // inside the JAR file, so we need to remove that prefix + resourceStripPrefix = proptools.StringPtr(dir.String()) + if i > 0 { + // TODO(b/226423379) allow multiple resource prefixes + ctx.ModuleErrorf("bp2build does not support more than one directory in java_resource_dirs (b/226423379)") + } + } + + return &javaResourcesAttributes{ + Resources: bazel.MakeLabelListAttribute(resources), + Resource_strip_prefix: resourceStripPrefix, + } +} + type javaCommonAttributes struct { + *javaResourcesAttributes Srcs bazel.LabelListAttribute Plugins bazel.LabelListAttribute Javacopts bazel.StringListAttribute @@ -2095,7 +2137,8 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) } commonAttrs := &javaCommonAttributes{ - Srcs: javaSrcs, + Srcs: javaSrcs, + javaResourcesAttributes: m.convertJavaResourcesAttributes(ctx), Plugins: bazel.MakeLabelListAttribute( android.BazelLabelForModuleDeps(ctx, m.properties.Plugins), ), diff --git a/java/java_resources.go b/java/java_resources.go index 787d74a0d..b0dc5a1cf 100644 --- a/java/java_resources.go +++ b/java/java_resources.go @@ -33,8 +33,13 @@ var resourceExcludes = []string{ "**/*~", } -func ResourceDirsToJarArgs(ctx android.ModuleContext, - resourceDirs, excludeResourceDirs, excludeResourceFiles []string) (args []string, deps android.Paths) { +type resourceDeps struct { + dir android.Path + files android.Paths +} + +func ResourceDirsToFiles(ctx android.BaseModuleContext, + resourceDirs, excludeResourceDirs, excludeResourceFiles []string) (deps []resourceDeps) { var excludeDirs []string var excludeFiles []string @@ -55,21 +60,36 @@ func ResourceDirsToJarArgs(ctx android.ModuleContext, dirs := ctx.Glob(android.PathForSource(ctx, ctx.ModuleDir()).Join(ctx, resourceDir).String(), excludeDirs) for _, dir := range dirs { files := ctx.GlobFiles(filepath.Join(dir.String(), "**/*"), excludeFiles) + deps = append(deps, resourceDeps{ + dir: dir, + files: files, + }) + } + } - deps = append(deps, files...) + return deps +} + +func ResourceDirsToJarArgs(ctx android.ModuleContext, + resourceDirs, excludeResourceDirs, excludeResourceFiles []string) (args []string, deps android.Paths) { + resDeps := ResourceDirsToFiles(ctx, resourceDirs, excludeResourceDirs, excludeResourceFiles) - if len(files) > 0 { - args = append(args, "-C", dir.String()) + for _, resDep := range resDeps { + dir, files := resDep.dir, resDep.files - for _, f := range files { - path := f.String() - if !strings.HasPrefix(path, dir.String()) { - panic(fmt.Errorf("path %q does not start with %q", path, dir)) - } - args = append(args, "-f", pathtools.MatchEscape(path)) + if len(files) > 0 { + args = append(args, "-C", dir.String()) + deps = append(deps, files...) + + for _, f := range files { + path := f.String() + if !strings.HasPrefix(path, dir.String()) { + panic(fmt.Errorf("path %q does not start with %q", path, dir)) } + args = append(args, "-f", pathtools.MatchEscape(path)) } } + } return args, deps diff --git a/java/lint.go b/java/lint.go index 426a2af25..22c9ec49f 100644 --- a/java/lint.go +++ b/java/lint.go @@ -524,10 +524,18 @@ func (l *lintSingleton) copyLintDependencies(ctx android.SingletonContext) { return } - frameworkDocStubs := findModuleOrErr(ctx, "framework-doc-stubs") - if frameworkDocStubs == nil { + apiVersionsDb := findModuleOrErr(ctx, "api_versions_public") + if apiVersionsDb == nil { if !ctx.Config().AllowMissingDependencies() { - ctx.Errorf("lint: missing framework-doc-stubs") + ctx.Errorf("lint: missing module api_versions_public") + } + return + } + + sdkAnnotations := findModuleOrErr(ctx, "sdk-annotations.zip") + if sdkAnnotations == nil { + if !ctx.Config().AllowMissingDependencies() { + ctx.Errorf("lint: missing module sdk-annotations.zip") } return } @@ -542,13 +550,13 @@ func (l *lintSingleton) copyLintDependencies(ctx android.SingletonContext) { ctx.Build(pctx, android.BuildParams{ Rule: android.CpIfChanged, - Input: android.OutputFileForModule(ctx, frameworkDocStubs, ".annotations.zip"), + Input: android.OutputFileForModule(ctx, sdkAnnotations, ""), Output: copiedAnnotationsZipPath(ctx), }) ctx.Build(pctx, android.BuildParams{ Rule: android.CpIfChanged, - Input: android.OutputFileForModule(ctx, frameworkDocStubs, ".api_versions.xml"), + Input: android.OutputFileForModule(ctx, apiVersionsDb, ".api_versions.xml"), Output: copiedAPIVersionsXmlPath(ctx, "api_versions.xml"), }) diff --git a/java/platform_bootclasspath_test.go b/java/platform_bootclasspath_test.go index 1c2a3aee5..6257e49e1 100644 --- a/java/platform_bootclasspath_test.go +++ b/java/platform_bootclasspath_test.go @@ -51,6 +51,7 @@ func TestPlatformBootclasspath(t *testing.T) { var addSourceBootclassPathModule = android.FixtureAddTextFile("source/Android.bp", ` java_library { name: "foo", + host_supported: true, // verify that b/232106778 is fixed srcs: ["a.java"], system_modules: "none", sdk_version: "none", |