Strip module-info.class files when combining jars

Combining static jars from dependencies may bring in module-info.class
files, which don't make sense once multiple modules have been combined,
and sometimes confuse downstream tools like desugar.  Strip them out
like make does when combining jars.

Test: m checkbuild
Change-Id: I560c5acfcc6e1be9adf604c22cf200581f92f702
This commit is contained in:
Colin Cross 2017-12-21 13:52:58 -08:00
parent c5de1b6cb2
commit 7b60cdd6e5
2 changed files with 7 additions and 0 deletions

View File

@ -383,6 +383,10 @@ func TransformJarsToJar(ctx android.ModuleContext, outputFile android.WritablePa
}
}
// Remove any module-info.class files that may have come from prebuilt jars, they cause problems
// for downstream tools like desugar.
jarArgs = append(jarArgs, "-stripFile module-info.class")
if stripDirs {
jarArgs = append(jarArgs, "-D")
}

View File

@ -781,6 +781,9 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path
if len(jars) == 1 && !manifest.Valid() {
// Optimization: skip the combine step if there is nothing to do
// TODO(ccross): this leaves any module-info.class files, but those should only come from
// prebuilt dependencies until we support modules in the platform build, so there shouldn't be
// any if len(jars) == 1.
outputFile = jars[0]
} else {
combinedJar := android.PathForModuleOut(ctx, "combined", jarName)