From 44ffb21e53d051d95a05c9c09fb3f9bfd4358004 Mon Sep 17 00:00:00 2001 From: Jiakai Zhang Date: Thu, 28 Oct 2021 14:37:20 +0000 Subject: [PATCH] Add a variable to specify standalone system server jars. This is the list of jars that system_server loads dynamically using separate classloaders. We will rely on this variable to decide which jars to preopt in the build system and on the device for system_server. The list is supposed to be in sync with the code in SystemServer.java. There will be a follow-up CL to add a comment in SystemServer.java to remind developers to keep them in sync. Bug: 203198541 Test: m nothing Change-Id: I305a73218ef2d2c61ac3795d21026b2afe7007fd --- core/dex_preopt_config.mk | 2 ++ core/product.mk | 8 +++++++- core/product_config.mk | 3 +++ target/product/default_art_config.mk | 15 ++++++++++++++- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/core/dex_preopt_config.mk b/core/dex_preopt_config.mk index 0c806c1852..d5293cf697 100644 --- a/core/dex_preopt_config.mk +++ b/core/dex_preopt_config.mk @@ -109,6 +109,8 @@ ifeq ($(WRITE_SOONG_VARIABLES),true) $(call add_json_list, SystemServerJars, $(PRODUCT_SYSTEM_SERVER_JARS)) $(call add_json_list, SystemServerApps, $(PRODUCT_SYSTEM_SERVER_APPS)) $(call add_json_list, ApexSystemServerJars, $(PRODUCT_APEX_SYSTEM_SERVER_JARS)) + $(call add_json_list, StandaloneSystemServerJars, $(PRODUCT_STANDALONE_SYSTEM_SERVER_JARS)) + $(call add_json_list, ApexStandaloneSystemServerJars, $(PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS)) $(call add_json_bool, BrokenSuboptimalOrderOfSystemServerJars, $(PRODUCT_BROKEN_SUBOPTIMAL_ORDER_OF_SYSTEM_SERVER_JARS)) $(call add_json_list, SpeedApps, $(PRODUCT_DEXPREOPT_SPEED_APPS)) $(call add_json_list, PreoptFlags, $(PRODUCT_DEX_PREOPT_DEFAULT_FLAGS)) diff --git a/core/product.mk b/core/product.mk index 503b44f6c1..31b1bebf11 100644 --- a/core/product.mk +++ b/core/product.mk @@ -232,9 +232,15 @@ _product_single_value_vars += PRODUCT_SUPPORTS_VBOOT _product_single_value_vars += PRODUCT_SUPPORTS_VERITY _product_single_value_vars += PRODUCT_SUPPORTS_VERITY_FEC _product_list_vars += PRODUCT_SYSTEM_SERVER_APPS +# List of system_server classpath jars on the platform. _product_list_vars += PRODUCT_SYSTEM_SERVER_JARS -# List of system_server jars delivered via apex. Format = :. +# List of system_server classpath jars delivered via apex. Format = :. _product_list_vars += PRODUCT_APEX_SYSTEM_SERVER_JARS +# List of jars on the platform that system_server loads dynamically using separate classloaders. +_product_list_vars += PRODUCT_STANDALONE_SYSTEM_SERVER_JARS +# List of jars delivered via apex that system_server loads dynamically using separate classloaders. +# Format = : +_product_list_vars += PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS # If true, then suboptimal order of system server jars does not cause an error. _product_single_value_vars += PRODUCT_BROKEN_SUBOPTIMAL_ORDER_OF_SYSTEM_SERVER_JARS # If true, then system server jars defined in Android.mk are supported. diff --git a/core/product_config.mk b/core/product_config.mk index ae0efe2ff8..2b444349b8 100644 --- a/core/product_config.mk +++ b/core/product_config.mk @@ -327,6 +327,9 @@ PRODUCT_SYSTEM_SERVER_JARS := $(call qualify-platform-jars,$(PRODUCT_SYSTEM_SERV PRODUCT_APEX_BOOT_JARS := $(sort $(PRODUCT_APEX_BOOT_JARS)) PRODUCT_APEX_SYSTEM_SERVER_JARS := $(sort $(PRODUCT_APEX_SYSTEM_SERVER_JARS)) +PRODUCT_STANDALONE_SYSTEM_SERVER_JARS := \ + $(call qualify-platform-jars,$(PRODUCT_STANDALONE_SYSTEM_SERVER_JARS)) + ifndef PRODUCT_SYSTEM_NAME PRODUCT_SYSTEM_NAME := $(PRODUCT_NAME) endif diff --git a/target/product/default_art_config.mk b/target/product/default_art_config.mk index e988d0067b..f98f7e275b 100644 --- a/target/product/default_art_config.mk +++ b/target/product/default_art_config.mk @@ -65,7 +65,8 @@ PRODUCT_APEX_BOOT_JARS := \ com.android.tethering:framework-tethering \ com.android.wifi:framework-wifi -# APEX system server jars. Keep the list sorted by module names and then library names. +# List of system_server classpath jars delivered via apex. +# Keep the list sorted by module names and then library names. PRODUCT_APEX_SYSTEM_SERVER_JARS := \ com.android.appsearch:service-appsearch \ com.android.art:service-art \ @@ -74,6 +75,18 @@ PRODUCT_APEX_SYSTEM_SERVER_JARS := \ PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION += art/build/boot/boot-image-profile.txt +# List of jars on the platform that system_server loads dynamically using separate classloaders. +# Keep the list sorted library names. +PRODUCT_STANDALONE_SYSTEM_SERVER_JARS := \ + +# List of jars delivered via apex that system_server loads dynamically using separate classloaders. +# Keep the list sorted by module names and then library names. +PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS := \ + com.android.os.statsd:service-statsd \ + com.android.scheduling:service-scheduling \ + com.android.tethering:service-connectivity \ + com.android.wifi:service-wifi \ + # Minimal configuration for running dex2oat (default argument values). # PRODUCT_USES_DEFAULT_ART_CONFIG must be true to enable boot image compilation. PRODUCT_USES_DEFAULT_ART_CONFIG := true