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

Commit dc2da916 authored by Colin Cross's avatar Colin Cross
Browse files

Don't dexpreopt when compile_dex but not installable

Modules shouldn't be dexpreopted and possibly stripped when
compile_dex is set but installable is not set.  This matches the
previous behavior when the dexpreopt rules were in Make.

Bug: 121317615
Test: dexpreopt_test.go
Change-Id: I6f80b7b37a990c475b91aa5d98a19a3baa85eb1b
parent e302687e
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ type dexpreopter struct {
	isPrivApp     bool
	isSDKLibrary  bool
	isTest        bool
	isInstallable bool

	builtInstalled []string
}
@@ -74,6 +75,10 @@ func (d *dexpreopter) dexpreoptDisabled(ctx android.ModuleContext) bool {
		return true
	}

	if !d.isInstallable {
		return true
	}

	// TODO: contains no java code

	return false
+10 −0
Original line number Diff line number Diff line
@@ -109,6 +109,16 @@ func TestDexpreoptEnabled(t *testing.T) {
				}`,
			enabled: false,
		},
		{
			name: "compile_dex",
			bp: `
				java_library {
					name: "foo",
					srcs: ["a.java"],
					compile_dex: true,
				}`,
			enabled: false,
		},
	}

	for _, test := range tests {
+1 −0
Original line number Diff line number Diff line
@@ -1326,6 +1326,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path

		j.dexJarFile = dexOutputFile

		j.dexpreopter.isInstallable = Bool(j.properties.Installable)
		dexOutputFile = j.dexpreopt(ctx, dexOutputFile)

		j.maybeStrippedDexJarFile = dexOutputFile