Merge "Automatically set uncompress_dex for java_import."
diff --git a/java/hiddenapi_singleton_test.go b/java/hiddenapi_singleton_test.go
index 34a4856..955c739 100644
--- a/java/hiddenapi_singleton_test.go
+++ b/java/hiddenapi_singleton_test.go
@@ -85,7 +85,7 @@
 
 	hiddenAPI := ctx.SingletonForTests("hiddenapi")
 	hiddenapiRule := hiddenAPI.Rule("hiddenapi")
-	want := "--boot-dex=" + buildDir + "/.intermediates/foo/android_common/dex/foo.jar"
+	want := "--boot-dex=" + buildDir + "/.intermediates/foo/android_common/aligned/foo.jar"
 	if !strings.Contains(hiddenapiRule.RuleParams.Command, want) {
 		t.Errorf("Expected %s in hiddenapi command, but it was not present: %s", want, hiddenapiRule.RuleParams.Command)
 	}
diff --git a/java/java.go b/java/java.go
index 04c49de..18dd9bd 100644
--- a/java/java.go
+++ b/java/java.go
@@ -2707,6 +2707,7 @@
 
 	hiddenAPI
 	dexer
+	dexpreopter
 
 	properties ImportProperties
 
@@ -2832,6 +2833,14 @@
 		}
 
 		// Dex compilation
+
+		j.dexpreopter.installPath = android.PathForModuleInstall(ctx, "framework", jarName)
+		if j.dexProperties.Uncompress_dex == nil {
+			// If the value was not force-set by the user, use reasonable default based on the module.
+			j.dexProperties.Uncompress_dex = proptools.BoolPtr(shouldUncompressDex(ctx, &j.dexpreopter))
+		}
+		j.dexpreopter.uncompressedDex = *j.dexProperties.Uncompress_dex
+
 		var dexOutputFile android.ModuleOutPath
 		dexOutputFile = j.dexer.compileDex(ctx, flags, j.minSdkVersion(), outputFile, jarName)
 		if ctx.Failed() {
@@ -2951,6 +2960,12 @@
 
 var _ android.PrebuiltInterface = (*Import)(nil)
 
+func (j *Import) IsInstallable() bool {
+	return Bool(j.properties.Installable)
+}
+
+var _ dexpreopterInterface = (*Import)(nil)
+
 // java_import imports one or more `.jar` files into the build graph as if they were built by a java_library module.
 //
 // By default, a java_import has a single variant that expects a `.jar` file containing `.class` files that were