Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4169898d authored by Colin Cross's avatar Colin Cross
Browse files

Only coverage instrument device modules that are being compiled to dex

There's no reason to instrument device modules that are not being
compiled to dex with jacoco, as they can't be installed on the device
if they only have class files, and modules that depend on it will
get the pre-instrumented jar.

Bug: 372543712
Test: TestCoverage
Change-Id: I10d5fb2eeb1f1acf6393603b5219685bf22f327c
parent 0c19b699
Loading
Loading
Loading
Loading
+17 −14
Original line number Diff line number Diff line
@@ -1735,7 +1735,22 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath

	completeStaticLibsImplementationJarsToCombine := completeStaticLibsImplementationJars

	if j.shouldInstrument(ctx) {
	// Enable dex compilation for the APEX variants, unless it is disabled explicitly
	compileDex := Bool(j.dexProperties.Compile_dex)
	apexInfo, _ := android.ModuleProvider(ctx, android.ApexInfoProvider)
	if j.DirectlyInAnyApex() && !apexInfo.IsForPlatform() {
		if j.dexProperties.Compile_dex == nil {
			compileDex = true
		}
		if j.deviceProperties.Hostdex == nil {
			j.deviceProperties.Hostdex = proptools.BoolPtr(true)
		}
	}
	if Bool(j.properties.Installable) {
		compileDex = true
	}

	if j.shouldInstrument(ctx) && (!ctx.Device() || compileDex) {
		instrumentedOutputFile := j.instrument(ctx, flags, outputFile, jarName, specs)
		completeStaticLibsImplementationJarsToCombine = depset.New(depset.PREORDER, android.Paths{instrumentedOutputFile}, nil)
		outputFile = instrumentedOutputFile
@@ -1764,19 +1779,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath

	j.implementationAndResourcesJar = outputFile

	// Enable dex compilation for the APEX variants, unless it is disabled explicitly
	compileDex := j.dexProperties.Compile_dex
	apexInfo, _ := android.ModuleProvider(ctx, android.ApexInfoProvider)
	if j.DirectlyInAnyApex() && !apexInfo.IsForPlatform() {
		if compileDex == nil {
			compileDex = proptools.BoolPtr(true)
		}
		if j.deviceProperties.Hostdex == nil {
			j.deviceProperties.Hostdex = proptools.BoolPtr(true)
		}
	}

	if ctx.Device() && (Bool(j.properties.Installable) || Bool(compileDex)) {
	if ctx.Device() && compileDex {
		if j.hasCode(ctx) {
			if j.shouldInstrumentStatic(ctx) {
				j.dexer.extraProguardFlagsFiles = append(j.dexer.extraProguardFlagsFiles,
+1 −0
Original line number Diff line number Diff line
@@ -3050,6 +3050,7 @@ func TestCoverage(t *testing.T) {
		java_library {
			name: "android.car",
			srcs: ["android.car.java"],
			installable: true,
		}
	`)