diff options
Diffstat (limited to 'java/java.go')
| -rw-r--r-- | java/java.go | 21 | 
1 files changed, 16 insertions, 5 deletions
| diff --git a/java/java.go b/java/java.go index 0ba1f5a7a..3518ac4e6 100644 --- a/java/java.go +++ b/java/java.go @@ -609,6 +609,21 @@ func (j *Module) shouldInstrumentStatic(ctx android.BaseModuleContext) bool {  			ctx.Config().UnbundledBuild())  } +func (j *Module) shouldInstrumentInApex(ctx android.BaseModuleContext) bool { +	// Force enable the instrumentation for java code that is built for APEXes ... +	// except for the jacocoagent itself (because instrumenting jacocoagent using jacocoagent +	// doesn't make sense) or framework libraries (e.g. libraries found in the InstrumentFrameworkModules list) unless EMMA_INSTRUMENT_FRAMEWORK is true. +	isJacocoAgent := ctx.ModuleName() == "jacocoagent" +	if android.DirectlyInAnyApex(ctx, ctx.ModuleName()) && !isJacocoAgent && !j.IsForPlatform() { +		if !inList(ctx.ModuleName(), config.InstrumentFrameworkModules) { +			return true +		} else if ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_FRAMEWORK") { +			return true +		} +	} +	return false +} +  func (j *Module) sdkVersion() sdkSpec {  	return sdkSpecFrom(String(j.deviceProperties.Sdk_version))  } @@ -1541,11 +1556,7 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {  		j.headerJarFile = j.implementationJarFile  	} -	// Force enable the instrumentation for java code that is built for APEXes ... -	// except for the jacocoagent itself (because instrumenting jacocoagent using jacocoagent -	// doesn't make sense) -	isJacocoAgent := ctx.ModuleName() == "jacocoagent" -	if android.DirectlyInAnyApex(ctx, ctx.ModuleName()) && !isJacocoAgent && !j.IsForPlatform() { +	if j.shouldInstrumentInApex(ctx) {  		j.properties.Instrument = true  	} |