1# 2# Copyright (C) 2020 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16 17# This file contains product config for the ART module that is common for 18# platform and unbundled builds. 19 20ifeq ($(ART_APEX_JARS),) 21 $(error ART_APEX_JARS is empty; cannot initialize PRODUCT_BOOT_JARS variable) 22endif 23 24# Order of the jars on BOOTCLASSPATH follows: 25# 1. ART APEX jars 26# 2. System jars 27# 3. System_ext jars 28# 4. Non-updatable APEX jars 29# 5. Updatable APEX jars 30# 31# ART APEX jars (1) are defined in ART_APEX_JARS. System and system_ext boot jars are defined below 32# in PRODUCT_BOOT_JARS. All other non-art APEX boot jars are part of the PRODUCT_APEX_BOOT_JARS. 33# 34# The actual runtime ordering matching above is determined by derive_classpath service at runtime. 35# See packages/modules/SdkExtensions/README.md for more details. 36 37# The order of PRODUCT_BOOT_JARS matters for runtime class lookup performance. 38PRODUCT_BOOT_JARS := \ 39 $(ART_APEX_JARS) 40 41# List of jars to be included in the ART boot image for testing. 42# DO NOT reorder this list. The order must match the one described above. 43# Note: We use the host variant of "core-icu4j" and "conscrypt" for testing. 44PRODUCT_TEST_ONLY_ART_BOOT_IMAGE_JARS := \ 45 $(ART_APEX_JARS) \ 46 platform:core-icu4j-host \ 47 platform:conscrypt-host \ 48 49# /system and /system_ext boot jars. 50PRODUCT_BOOT_JARS += \ 51 framework-minus-apex \ 52 framework-graphics \ 53 framework-location \ 54 ext \ 55 telephony-common \ 56 voip-common \ 57 ims-common 58 59# APEX boot jars. Keep the list sorted by module names and then library names. 60# Note: If the existing apex introduces the new jar, also add it to 61# PRODUCT_APEX_BOOT_JARS_FOR_SOURCE_BUILD_ONLY below. 62# Note: core-icu4j is moved back to PRODUCT_BOOT_JARS in product_config.mk at a later stage. 63# Note: For modules available in Q, DO NOT add new entries here. 64PRODUCT_APEX_BOOT_JARS := \ 65 com.android.adservices:framework-adservices \ 66 com.android.adservices:framework-sdksandbox \ 67 com.android.appsearch:framework-appsearch \ 68 com.android.bt:framework-bluetooth \ 69 com.android.configinfrastructure:framework-configinfrastructure \ 70 com.android.conscrypt:conscrypt \ 71 com.android.devicelock:framework-devicelock \ 72 com.android.healthfitness:framework-healthfitness \ 73 com.android.i18n:core-icu4j \ 74 com.android.ipsec:android.net.ipsec.ike \ 75 com.android.media:updatable-media \ 76 com.android.mediaprovider:framework-mediaprovider \ 77 com.android.mediaprovider:framework-pdf \ 78 com.android.mediaprovider:framework-pdf-v \ 79 com.android.mediaprovider:framework-photopicker \ 80 com.android.ondevicepersonalization:framework-ondevicepersonalization \ 81 com.android.os.statsd:framework-statsd \ 82 com.android.permission:framework-permission \ 83 com.android.permission:framework-permission-s \ 84 com.android.scheduling:framework-scheduling \ 85 com.android.sdkext:framework-sdkextensions \ 86 com.android.tethering:framework-connectivity \ 87 com.android.tethering:framework-connectivity-t \ 88 com.android.tethering:framework-tethering \ 89 com.android.uwb:framework-uwb \ 90 com.android.virt:framework-virtualization \ 91 com.android.wifi:framework-wifi \ 92 93# When crashrecovery module is ready use apex jar 94# else put the platform jar in system 95ifeq ($(RELEASE_CRASHRECOVERY_MODULE),true) 96 PRODUCT_APEX_BOOT_JARS += \ 97 com.android.crashrecovery:framework-crashrecovery \ 98 99else 100 PRODUCT_BOOT_JARS += \ 101 framework-platformcrashrecovery \ 102 103endif 104 105# When we release ondeviceintelligence in NeuralNetworks module 106ifeq ($(RELEASE_ONDEVICE_INTELLIGENCE_MODULE),true) 107 PRODUCT_APEX_BOOT_JARS += \ 108 com.android.neuralnetworks:framework-ondeviceintelligence \ 109 110else 111 PRODUCT_BOOT_JARS += \ 112 framework-ondeviceintelligence-platform \ 113 114endif 115 116# Check if the build supports NFC apex or not 117ifeq ($(RELEASE_PACKAGE_NFC_STACK),NfcNci) 118 PRODUCT_BOOT_JARS += \ 119 framework-nfc 120else 121 PRODUCT_APEX_BOOT_JARS += \ 122 com.android.nfcservices:framework-nfc 123 $(call soong_config_set,bootclasspath,nfc_apex_bootclasspath_fragment,true) 124endif 125 126# Check if build supports Profiling module. 127ifeq ($(RELEASE_PACKAGE_PROFILING_MODULE),true) 128 PRODUCT_APEX_BOOT_JARS += \ 129 com.android.profiling:framework-profiling \ 130 131endif 132 133ifneq (,$(RELEASE_RANGING_STACK)) 134 PRODUCT_APEX_BOOT_JARS += \ 135 com.android.uwb:framework-ranging \ 136 $(call soong_config_set,bootclasspath,release_ranging_stack,true) 137endif 138 139# Check if VCN should be built into the tethering module or not 140ifeq ($(RELEASE_MOVE_VCN_TO_MAINLINE),true) 141 PRODUCT_APEX_BOOT_JARS += \ 142 com.android.tethering:framework-connectivity-b \ 143 144else 145 PRODUCT_BOOT_JARS += \ 146 framework-connectivity-b \ 147 148endif 149 150# List of system_server classpath jars delivered via apex. 151# Keep the list sorted by module names and then library names. 152# Note: For modules available in Q, DO NOT add new entries here. 153PRODUCT_APEX_SYSTEM_SERVER_JARS := \ 154 com.android.adservices:service-adservices \ 155 com.android.adservices:service-sdksandbox \ 156 com.android.appsearch:service-appsearch \ 157 com.android.art:service-art \ 158 com.android.configinfrastructure:service-configinfrastructure \ 159 com.android.healthfitness:service-healthfitness \ 160 com.android.media:service-media-s \ 161 com.android.ondevicepersonalization:service-ondevicepersonalization \ 162 com.android.permission:service-permission \ 163 com.android.rkpd:service-rkp \ 164 165# When we release crashrecovery module 166ifeq ($(RELEASE_CRASHRECOVERY_MODULE),true) 167 PRODUCT_APEX_SYSTEM_SERVER_JARS += \ 168 com.android.crashrecovery:service-crashrecovery \ 169 170endif 171 172# When we release ondeviceintelligence in NeuralNetworks module 173ifeq ($(RELEASE_ONDEVICE_INTELLIGENCE_MODULE),true) 174 PRODUCT_APEX_SYSTEM_SERVER_JARS += \ 175 com.android.neuralnetworks:service-ondeviceintelligence 176 177endif 178 179ifeq ($(RELEASE_AVF_ENABLE_LLPVM_CHANGES),true) 180 PRODUCT_APEX_SYSTEM_SERVER_JARS += com.android.virt:service-virtualization 181endif 182 183# Use $(wildcard) to avoid referencing the profile in thin manifests that don't have the 184# art project. 185ifneq (,$(wildcard art)) 186 PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION += art/build/boot/boot-image-profile.txt 187endif 188 189# List of jars on the platform that system_server loads dynamically using separate classloaders. 190# Keep the list sorted library names. 191PRODUCT_STANDALONE_SYSTEM_SERVER_JARS := \ 192 193# List of jars delivered via apex that system_server loads dynamically using separate classloaders. 194# Keep the list sorted by module names and then library names. 195# Note: For modules available in Q, DO NOT add new entries here. 196PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS := \ 197 com.android.bt:service-bluetooth \ 198 com.android.devicelock:service-devicelock \ 199 com.android.os.statsd:service-statsd \ 200 com.android.scheduling:service-scheduling \ 201 com.android.tethering:service-connectivity \ 202 com.android.uwb:service-uwb \ 203 com.android.wifi:service-wifi \ 204 205# Check if build supports Profiling module. 206ifeq ($(RELEASE_PACKAGE_PROFILING_MODULE),true) 207 PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS += \ 208 com.android.profiling:service-profiling \ 209 210endif 211 212ifneq (,$(RELEASE_RANGING_STACK)) 213 PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS += \ 214 com.android.uwb:service-ranging 215endif 216 217# Overrides the (apex, jar) pairs above when determining the on-device location. The format is: 218# <old_apex>:<old_jar>:<new_apex>:<new_jar> 219PRODUCT_CONFIGURED_JAR_LOCATION_OVERRIDES := \ 220 platform:framework-minus-apex:platform:framework \ 221 platform:core-icu4j-host:com.android.i18n:core-icu4j \ 222 platform:conscrypt-host:com.android.conscrypt:conscrypt \ 223 224# Minimal configuration for running dex2oat (default argument values). 225# PRODUCT_USES_DEFAULT_ART_CONFIG must be true to enable boot image compilation. 226PRODUCT_USES_DEFAULT_ART_CONFIG := true 227PRODUCT_SYSTEM_PROPERTIES += \ 228 dalvik.vm.image-dex2oat-Xms=64m \ 229 dalvik.vm.image-dex2oat-Xmx=64m \ 230 dalvik.vm.dex2oat-Xms=64m \ 231 dalvik.vm.dex2oat-Xmx=512m \ 232 233PRODUCT_ENABLE_UFFD_GC := default 234