diff options
Diffstat (limited to 'java/java.go')
| -rw-r--r-- | java/java.go | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/java/java.go b/java/java.go index a48b5a300..a546cd524 100644 --- a/java/java.go +++ b/java/java.go @@ -447,6 +447,7 @@ type Dependency interface { ExportedPlugins() (android.Paths, []string) SrcJarArgs() ([]string, android.Paths) BaseModuleName() string + JacocoReportClassesFile() android.Path } type SdkLibraryDependency interface { @@ -651,7 +652,14 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) { } } - if j.shouldInstrumentStatic(ctx) { + // Framework libraries need special handling in static coverage builds: they should not have + // static dependency on jacoco, otherwise there would be multiple conflicting definitions of + // the same jacoco classes coming from different bootclasspath jars. + if inList(ctx.ModuleName(), config.InstrumentFrameworkModules) { + if ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_FRAMEWORK") { + j.properties.Instrument = true + } + } else if j.shouldInstrumentStatic(ctx) { ctx.AddVariationDependencies(nil, staticLibTag, "jacocoagent") } } @@ -1454,12 +1462,6 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { j.headerJarFile = j.implementationJarFile } - if ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_FRAMEWORK") { - if inList(ctx.ModuleName(), config.InstrumentFrameworkModules) { - j.properties.Instrument = true - } - } - if j.shouldInstrument(ctx) { outputFile = j.instrument(ctx, flags, outputFile, jarName) } @@ -1719,6 +1721,10 @@ func (j *Module) Stem() string { return proptools.StringDefault(j.deviceProperties.Stem, j.Name()) } +func (j *Module) JacocoReportClassesFile() android.Path { + return j.jacocoReportClassesFile +} + // // Java libraries (.jar file) // @@ -2295,6 +2301,10 @@ func (j *Import) Stem() string { return proptools.StringDefault(j.properties.Stem, j.ModuleBase.Name()) } +func (a *Import) JacocoReportClassesFile() android.Path { + return nil +} + func (j *Import) DepsMutator(ctx android.BottomUpMutatorContext) { ctx.AddVariationDependencies(nil, libTag, j.properties.Libs...) } |