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
diff --git a/java/dexpreopt.go b/java/dexpreopt.go
index de9c5f3..1dc3e9f 100644
--- a/java/dexpreopt.go
+++ b/java/dexpreopt.go
@@ -28,10 +28,11 @@
type dexpreopter struct {
dexpreoptProperties DexpreoptProperties
- installPath android.OutputPath
- isPrivApp bool
- isSDKLibrary bool
- isTest bool
+ installPath android.OutputPath
+ isPrivApp bool
+ isSDKLibrary bool
+ isTest bool
+ isInstallable bool
builtInstalled []string
}
@@ -74,6 +75,10 @@
return true
}
+ if !d.isInstallable {
+ return true
+ }
+
// TODO: contains no java code
return false
diff --git a/java/dexpreopt_test.go b/java/dexpreopt_test.go
index e4c80dd..6838bd2 100644
--- a/java/dexpreopt_test.go
+++ b/java/dexpreopt_test.go
@@ -109,6 +109,16 @@
}`,
enabled: false,
},
+ {
+ name: "compile_dex",
+ bp: `
+ java_library {
+ name: "foo",
+ srcs: ["a.java"],
+ compile_dex: true,
+ }`,
+ enabled: false,
+ },
}
for _, test := range tests {
diff --git a/java/java.go b/java/java.go
index 12e724e..5e67193 100644
--- a/java/java.go
+++ b/java/java.go
@@ -1326,6 +1326,7 @@
j.dexJarFile = dexOutputFile
+ j.dexpreopter.isInstallable = Bool(j.properties.Installable)
dexOutputFile = j.dexpreopt(ctx, dexOutputFile)
j.maybeStrippedDexJarFile = dexOutputFile