forked from openkylin/platform_build
dex_preopt: Use the unstripped jar file for generating profiles.
We were previously using LOCAL_BUILT_MODULE, which wouldn't work in the case that "nostripping" wasn't specified (i.e when we stripped). The issue is that the built module has its classes.dex entry stripped, which means that profman can't do anything meaningful with it. In this change, we use the right set of files for JAVA_LIBRARIES as well as prebuilt PACKAGES. Fixing apps built from source is a larger task and has been left for a future change. Depending on ART changes, we might need to disable stripping for all apps and/or align userdebug and user builds with each other. This will be tackled separately. Test: make Bug: 64896089 Change-Id: I4fd256d187b66763f354cc6001953469c2cd8fbb
This commit is contained in:
parent
76097d33b2
commit
bbcdc07d12
|
@ -142,16 +142,19 @@ ifeq (true,$(LOCAL_DEX_PREOPT_GENERATE_PROFILE))
|
|||
ifndef LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING
|
||||
$(call pretty-error,Must have specified class listing (LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING))
|
||||
endif
|
||||
ifeq (,$(dex_preopt_profile_src_file))
|
||||
$(call pretty-error, Internal error: dex_preopt_profile_src_file must be set)
|
||||
endif
|
||||
my_built_profile := $(dir $(LOCAL_BUILT_MODULE))/profile.prof
|
||||
my_dex_location := $(patsubst $(PRODUCT_OUT)%,%,$(LOCAL_INSTALLED_MODULE))
|
||||
$(built_odex): $(my_built_profile)
|
||||
$(built_odex): PRIVATE_PROFILE_PREOPT_FLAGS := --profile-file=$(my_built_profile)
|
||||
$(my_built_profile): PRIVATE_BUILT_MODULE := $(LOCAL_BUILT_MODULE)
|
||||
$(my_built_profile): PRIVATE_BUILT_MODULE := $(dex_preopt_profile_src_file)
|
||||
$(my_built_profile): PRIVATE_DEX_LOCATION := $(my_dex_location)
|
||||
$(my_built_profile): PRIVATE_SOURCE_CLASSES := $(LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING)
|
||||
$(my_built_profile): $(LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING)
|
||||
$(my_built_profile): $(PROFMAN)
|
||||
$(my_built_profile): $(LOCAL_BUILT_MODULE)
|
||||
$(my_built_profile): $(dex_preopt_profile_src_file)
|
||||
$(my_built_profile):
|
||||
$(hide) mkdir -p $(dir $@)
|
||||
ANDROID_LOG_TAGS="*:e" $(PROFMAN) \
|
||||
|
@ -159,6 +162,7 @@ $(my_built_profile):
|
|||
--apk=$(PRIVATE_BUILT_MODULE) \
|
||||
--dex-location=$(PRIVATE_DEX_LOCATION) \
|
||||
--reference-profile-file=$@
|
||||
dex_preopt_profile_src_file:=
|
||||
my_installed_profile := $(LOCAL_INSTALLED_MODULE).prof
|
||||
$(eval $(call copy-one-file,$(my_built_profile),$(my_installed_profile)))
|
||||
build_installed_profile:=$(my_built_profile):$(my_installed_profile)
|
||||
|
|
13
core/java.mk
13
core/java.mk
|
@ -381,6 +381,19 @@ include $(BUILD_SYSTEM)/java_common.mk
|
|||
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HAS_RS_SOURCES := $(if $(renderscript_sources),true)
|
||||
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RS_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/renderscript
|
||||
|
||||
# Set the profile source so that the odex / profile code included from java.mk
|
||||
# can find it.
|
||||
#
|
||||
# TODO: b/64896089, this is broken when called from package_internal.mk, since the file
|
||||
# we preopt from is a temporary file. This will be addressed in a follow up, possibly
|
||||
# by disabling stripping for profile guided preopt (which may be desirable for other
|
||||
# reasons anyway).
|
||||
#
|
||||
# Note that we set this only when called from package_internal.mk and not in other cases.
|
||||
ifneq (,$(called_from_package_internal)
|
||||
dex_preopt_profile_src_file := $(LOCAL_BUILT_MODULE)
|
||||
endif
|
||||
|
||||
#######################################
|
||||
# defines built_odex along with rule to install odex
|
||||
include $(BUILD_SYSTEM)/dex_preopt_odex_install.mk
|
||||
|
|
|
@ -44,6 +44,7 @@ endif
|
|||
# java libraries produce javalib.jar, so we will copy classes.jar there too.
|
||||
intermediates.COMMON := $(call local-intermediates-dir,COMMON)
|
||||
common_javalib.jar := $(intermediates.COMMON)/javalib.jar
|
||||
dex_preopt_profile_src_file := $(common_javalib.jar)
|
||||
LOCAL_INTERMEDIATE_TARGETS += $(common_javalib.jar)
|
||||
|
||||
ifeq ($(LOCAL_PROGUARD_ENABLED),disabled)
|
||||
|
|
|
@ -327,9 +327,11 @@ endif
|
|||
|
||||
include $(BUILD_SYSTEM)/android_manifest.mk
|
||||
|
||||
called_from_package_internal := true
|
||||
#################################
|
||||
include $(BUILD_SYSTEM)/java.mk
|
||||
#################################
|
||||
called_from_package_internal :=
|
||||
|
||||
LOCAL_SDK_RES_VERSION:=$(strip $(LOCAL_SDK_RES_VERSION))
|
||||
ifeq ($(LOCAL_SDK_RES_VERSION),)
|
||||
|
|
|
@ -283,6 +283,8 @@ my_extracted_apk :=
|
|||
my_extract_apk :=
|
||||
endif
|
||||
|
||||
dex_preopt_profile_src_file := $(my_prebuilt_src_file)
|
||||
|
||||
rs_compatibility_jni_libs :=
|
||||
include $(BUILD_SYSTEM)/install_jni_libs.mk
|
||||
|
||||
|
|
Loading…
Reference in New Issue