From 1687d842d4ff487494988b2d9f822757736dd696 Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Thu, 28 Jul 2022 17:22:23 -0700 Subject: [PATCH] Tune R8 shrinking defaults for system_server Disable R8 shrinking by default if there are additional SYSTEM_SERVER_JARS that may be downstream from services.jar, or if the jar ordering is unreliable. The longer term solution will be to feed R8 the SYSTEM_SERVER_JARS explicitly during the shrinking phase, but for now this avoids potential issues with such dowstream jars. Note that specific products or targets can still opt-in explicitly even if there may be ordering issues in SYSTEM_SERVER_JARS. Bug: 240588226,235484969 Test: m + lunch various Arc/Wear/Auto targets Change-Id: I1d824e1e61de65604123b65b25b192a8a32fd0c1 --- core/android_soong_config_vars.mk | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/core/android_soong_config_vars.mk b/core/android_soong_config_vars.mk index 6e521950ee..022c3ed8f1 100644 --- a/core/android_soong_config_vars.mk +++ b/core/android_soong_config_vars.mk @@ -97,7 +97,20 @@ endif # TODO(b/203088572): Remove when Java optimizations enabled by default for # SystemUI. $(call add_soong_config_var,ANDROID,SYSTEMUI_OPTIMIZE_JAVA) -# Enable by default unless explicitly set or overridden. -# See frameworks/base/services/Android.bp for additional notes on side effects. -SYSTEM_OPTIMIZE_JAVA ?= true + +# Enable system_server optimizations by default unless explicitly set or if +# there may be dependent runtime jars. +# TODO(b/240588226): Remove the off-by-default exceptions after handling +# system_server jars automatically w/ R8. +ifeq (true,$(PRODUCT_BROKEN_SUBOPTIMAL_ORDER_OF_SYSTEM_SERVER_JARS)) + # If system_server jar ordering is broken, don't assume services.jar can be + # safely optimized in isolation, as there may be dependent jars. + SYSTEM_OPTIMIZE_JAVA ?= false +else ifneq (platform:services,$(lastword $(PRODUCT_SYSTEM_SERVER_JARS))) + # If services is not the final jar in the dependency ordering, don't assume + # it can be safely optimized in isolation, as there may be dependent jars. + SYSTEM_OPTIMIZE_JAVA ?= false +else + SYSTEM_OPTIMIZE_JAVA ?= true +endif $(call add_soong_config_var,ANDROID,SYSTEM_OPTIMIZE_JAVA)