diff --git a/java/dex.go b/java/dex.go index 2beb2ac36..66e71b597 100644 --- a/java/dex.go +++ b/java/dex.go @@ -185,6 +185,11 @@ func (j *Module) r8Flags(ctx android.ModuleContext, flags javaBuilderFlags) (r8F android.PathForSource(ctx, "build/make/core/proguard.flags"), } + if j.shouldInstrumentStatic(ctx) { + flagFiles = append(flagFiles, + android.PathForSource(ctx, "build/make/core/proguard.jacoco.flags")) + } + flagFiles = append(flagFiles, j.extraProguardFlagFiles...) // TODO(ccross): static android library proguard files diff --git a/java/java.go b/java/java.go index 24debacd8..8f58c6eae 100644 --- a/java/java.go +++ b/java/java.go @@ -319,6 +319,16 @@ func sdkStringToNumber(ctx android.BaseContext, v string) int { } } +func (j *Module) shouldInstrument(ctx android.BaseContext) bool { + return j.properties.Instrument && ctx.Config().IsEnvTrue("EMMA_INSTRUMENT") +} + +func (j *Module) shouldInstrumentStatic(ctx android.BaseContext) bool { + return j.shouldInstrument(ctx) && + (ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_STATIC") || + ctx.Config().UnbundledBuild()) +} + func decodeSdkDep(ctx android.BaseContext, v string) sdkDep { i := sdkStringToNumber(ctx, v) if i == -1 { @@ -443,6 +453,10 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) { // Kotlin files ctx.AddDependency(ctx.Module(), kotlinStdlibTag, "kotlin-stdlib") } + + if j.shouldInstrumentStatic(ctx) { + ctx.AddDependency(ctx.Module(), staticLibTag, "jacocoagent") + } } func hasSrcExt(srcs []string, ext string) bool { @@ -871,7 +885,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path } } - if ctx.Config().IsEnvTrue("EMMA_INSTRUMENT") && j.properties.Instrument { + if j.shouldInstrument(ctx) { outputFile = j.instrument(ctx, flags, outputFile, jarName) }