Allow access to the class jar for java_import using {.jar} tag

Layoutlib requires access to the jar file (containing .class) files for
a number of libraries including "core-libart". It does that using the
{.jar} output tag, e.g. "core-libart{.jar}".

This change makes sure that works when "core-libart" is provided as a
java_import instead of a java_library.

Bug: 142938164
Test: m nothing
Change-Id: I605019d680c28e4a33f0ca14279d63fa62b9774b
This commit is contained in:
Paul Duffin
2020-10-06 17:20:13 +01:00
parent 81febc4500
commit aa55f74505
2 changed files with 36 additions and 1 deletions

View File

@@ -2699,6 +2699,17 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {
}
}
func (j *Import) OutputFiles(tag string) (android.Paths, error) {
switch tag {
case ".jar":
return android.Paths{j.combinedClasspathFile}, nil
default:
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
}
}
var _ android.OutputFileProducer = (*Import)(nil)
var _ Dependency = (*Import)(nil)
func (j *Import) HeaderJars() android.Paths {

View File

@@ -1412,7 +1412,31 @@ func TestJavaLibrary(t *testing.T) {
name: "core",
sdk_version: "none",
system_modules: "none",
}`),
}
filegroup {
name: "core-jar",
srcs: [":core{.jar}"],
}
`),
})
ctx := testContext()
run(t, ctx, config)
}
func TestJavaImport(t *testing.T) {
config := testConfig(nil, "", map[string][]byte{
"libcore/Android.bp": []byte(`
java_import {
name: "core",
sdk_version: "none",
}
filegroup {
name: "core-jar",
srcs: [":core{.jar}"],
}
`),
})
ctx := testContext()
run(t, ctx, config)