Add config for FULL_SYSTEM_OPTIMIZE_JAVA

FULL_SYSTEM_OPTIMIZE_JAVA allows device to enable full system java
optimization. FULL_SYSTEM_OPTIMIZE_JAVA will override
SYSTEM_OPTIMIZE_JAVA.

Modified proguard flags and kept classes1 that are necessary when
optimization is enabled.

Bug: 300514883
Test: local m, device boot and briefly tested
Change-Id: If4555dcc7bc2d2c1f8fb9bee044de666d6db04a7
diff --git a/services/Android.bp b/services/Android.bp
index 3ae9360..59d6b5c 100644
--- a/services/Android.bp
+++ b/services/Android.bp
@@ -41,7 +41,10 @@
     name: "system_optimized_java_defaults",
     module_type: "java_defaults",
     config_namespace: "ANDROID",
-    bool_variables: ["SYSTEM_OPTIMIZE_JAVA"],
+    bool_variables: [
+        "SYSTEM_OPTIMIZE_JAVA",
+        "FULL_SYSTEM_OPTIMIZE_JAVA",
+    ],
     properties: [
         "optimize",
         "dxflags",
@@ -56,6 +59,7 @@
                 enabled: true,
                 // TODO(b/210510433): Enable optimizations after improving
                 // retracing infra.
+                // See also FULL_SYSTEM_OPTIMIZE_JAVA.
                 optimize: false,
                 shrink: true,
                 ignore_warnings: false,
@@ -81,6 +85,12 @@
                 dxflags: ["--debug"],
             },
         },
+        // Allow form factors to opt-in full system java optimization
+        FULL_SYSTEM_OPTIMIZE_JAVA: {
+            optimize: {
+                optimize: true,
+            },
+        },
     },
 }