# # Copyright (C) 2013 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Provides a functioning ART environment without Android frameworks $(call inherit-product, $(SRC_TARGET_DIR)/product/default_art_config.mk) # Additional mixins to the boot classpath. PRODUCT_PACKAGES += \ android.test.base \ # Why are we pulling in ext, which is frameworks/base, depending on tagsoup and nist-sip? PRODUCT_PACKAGES += \ ext \ # Runtime (Bionic) APEX module. PRODUCT_PACKAGES += com.android.runtime # ART APEX module. # # Select either release (com.android.art) or debug (com.android.art.debug) # variant of the ART APEX. By default, "user" build variants contain the release # module, while the "eng" build variant contain the debug module. However, if # `PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD` is defined, it overrides the previous # logic: # - if `PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD` is set to `false`, the # build will include the release module (whatever the build # variant); # - if `PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD` is set to `true`, the # build will include the debug module (whatever the build variant). # # Note that the ART APEX package includes the minimal boot classpath JARs # (listed in ART_APEX_JARS), which should no longer be added directly to # PRODUCT_PACKAGES. art_target_include_debug_build := $(PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD) ifneq (false,$(art_target_include_debug_build)) ifneq (,$(filter eng,$(TARGET_BUILD_VARIANT))) art_target_include_debug_build := true endif endif ifeq (true,$(art_target_include_debug_build)) PRODUCT_PACKAGES += com.android.art.debug apex_test_module := art-check-debug-apex-gen-fakebin else PRODUCT_PACKAGES += com.android.art apex_test_module := art-check-release-apex-gen-fakebin endif ifeq (true,$(call soong_config_get,art_module,source_build)) PRODUCT_HOST_PACKAGES += $(apex_test_module) endif art_target_include_debug_build := apex_test_module := # Certificates. PRODUCT_PACKAGES += \ cacerts \ PRODUCT_PACKAGES += \ hiddenapi-package-whitelist.xml \ # The dalvik.vm.dexopt.thermal-cutoff property must contain one of the values # listed here: # # https://source.android.com/devices/architecture/hidl/thermal-mitigation#thermal-api # # If the thermal status of the device reaches or exceeds the value set here # background dexopt will be terminated and rescheduled using an exponential # backoff polcy. # # The thermal cutoff value is currently set to THERMAL_STATUS_MODERATE. PRODUCT_SYSTEM_PROPERTIES += \ dalvik.vm.usejit=true \ dalvik.vm.usejitprofiles=true \ dalvik.vm.dexopt.secondary=true \ dalvik.vm.dexopt.thermal-cutoff=2 \ dalvik.vm.appimageformat=lz4 PRODUCT_SYSTEM_PROPERTIES += \ ro.dalvik.vm.native.bridge?=0 # Different dexopt types for different package update/install times. # On eng builds, make "boot" reasons only extract for faster turnaround. ifeq (eng,$(TARGET_BUILD_VARIANT)) PRODUCT_SYSTEM_PROPERTIES += \ pm.dexopt.first-boot?=extract \ pm.dexopt.boot-after-ota?=extract else PRODUCT_SYSTEM_PROPERTIES += \ pm.dexopt.first-boot?=verify \ pm.dexopt.boot-after-ota?=verify endif # The install filter is speed-profile in order to enable the use of # profiles from the dex metadata files. Note that if a profile is not provided # or if it is empty speed-profile is equivalent to (quicken + empty app image). # Note that `cmdline` is not strictly needed but it simplifies the management # of compilation reason in the platform (as we have a unified, single path, # without exceptions). PRODUCT_SYSTEM_PROPERTIES += \ pm.dexopt.post-boot?=extract \ pm.dexopt.install?=speed-profile \ pm.dexopt.install-fast?=skip \ pm.dexopt.install-bulk?=speed-profile \ pm.dexopt.install-bulk-secondary?=verify \ pm.dexopt.install-bulk-downgraded?=verify \ pm.dexopt.install-bulk-secondary-downgraded?=extract \ pm.dexopt.bg-dexopt?=speed-profile \ pm.dexopt.ab-ota?=speed-profile \ pm.dexopt.inactive?=verify \ pm.dexopt.cmdline?=verify \ pm.dexopt.shared?=speed # Enable resolution of startup const strings. PRODUCT_SYSTEM_PROPERTIES += \ dalvik.vm.dex2oat-resolve-startup-strings=true # Specify default block size of 512K to enable parallel image decompression. PRODUCT_SYSTEM_PROPERTIES += \ dalvik.vm.dex2oat-max-image-block-size=524288 # Enable minidebuginfo generation unless overridden. PRODUCT_SYSTEM_PROPERTIES += \ dalvik.vm.minidebuginfo=true \ dalvik.vm.dex2oat-minidebuginfo=true # Two other device configs are added to IORap besides "ro.iorapd.enable". # IORap by default is off and starts when # (https://source.corp.google.com/android/system/iorap/iorapd.rc?q=iorapd.rc) # # * "ro.iorapd.enable" is true excluding unset # * One of the device configs is true. # # "ro.iorapd.enable" has to be set to true, so that iorap can be started. PRODUCT_SYSTEM_PROPERTIES += \ ro.iorapd.enable?=true # Enable Madvising of the whole art, odex and vdex files to MADV_WILLNEED. # The size specified here is the size limit of how much of the file # (in bytes) is madvised. # We madvise the whole .art file to MADV_WILLNEED with UINT_MAX limit. # For odex and vdex files, we limit madvising to 100MB. PRODUCT_SYSTEM_PROPERTIES += \ dalvik.vm.madvise.vdexfile.size=104857600 \ dalvik.vm.madvise.odexfile.size=104857600 \ dalvik.vm.madvise.artfile.size=4294967295