Propagate PRODUCT_MINIMIZE_JAVA_DEBUG_INFO to soong and use it

Strip debug info in javac when PRODUCT_MINIMIZE_JAVA_DEBUG_INFO
is set.

Test: m with PRODUCT_MINIMIZE_JAVA_DEBUG_INFO=true
Change-Id: I167e742662801291c516bf1ff826486560d22147
diff --git a/android/config.go b/android/config.go
index 56d0a39..e9a8d42 100644
--- a/android/config.go
+++ b/android/config.go
@@ -504,6 +504,10 @@
 	return Bool(c.ProductVariables.Pdk)
 }
 
+func (c *config) MinimizeJavaDebugInfo() bool {
+	return Bool(c.ProductVariables.MinimizeJavaDebugInfo) && !Bool(c.ProductVariables.Eng)
+}
+
 func (c *config) DevicePrefer32BitExecutables() bool {
 	return Bool(c.ProductVariables.DevicePrefer32BitExecutables)
 }
diff --git a/android/variable.go b/android/variable.go
index 4b3925c..28841e2 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -158,6 +158,7 @@
 	Treble                     *bool `json:",omitempty"`
 	Pdk                        *bool `json:",omitempty"`
 	Uml                        *bool `json:",omitempty"`
+	MinimizeJavaDebugInfo      *bool `json:",omitempty"`
 
 	IntegerOverflowExcludePaths *[]string `json:",omitempty"`
 
diff --git a/java/java.go b/java/java.go
index 7ecf672..1541dec 100644
--- a/java/java.go
+++ b/java/java.go
@@ -466,6 +466,11 @@
 	if ctx.AConfig().TargetOpenJDK9() {
 		javacFlags = append(javacFlags, j.properties.Openjdk9.Javacflags...)
 	}
+	if ctx.AConfig().MinimizeJavaDebugInfo() {
+		// Override the -g flag passed globally to remove local variable debug info to reduce
+		// disk and memory usage.
+		javacFlags = append(javacFlags, "-g:source,lines")
+	}
 	if len(javacFlags) > 0 {
 		// optimization.
 		ctx.Variable(pctx, "javacFlags", strings.Join(javacFlags, " "))