• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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