From 2311f61b12b92edcccca57ab66d9c6682c8be4d5 Mon Sep 17 00:00:00 2001 From: Ulya Trafimovich Date: Tue, 9 Jun 2020 14:36:03 +0100 Subject: [PATCH] Fix on-device paths to used libraries in dexpreopt. Also, add function `install-path-to-on-device-path` that converts its one argument from on-host install path to on-device path by stripping PRODUCT_OUT prefix. Test: lunch aosp_cf_x86_phone-userdebug && m Test: Cherry-pick in internal master and check that on-device path to com.google.android.dialer.support.jar now is on /product partition (as it should be) and not on /system: $ oatdump \ --instruction-set=x86 \ --oat-file=out/target/product/vsoc_x86/product/priv-app/GoogleDialer/oat/x86/GoogleDialer.odex \ | grep '^classpath' \ | grep -o '[^[]*com.google.android.dialer.support.jar' /product/framework/com.google.android.dialer.support.jar Bug: 132357300 Change-Id: I9bbe45ffbbed09186ac46e067da7ada599ef9678 --- core/definitions.mk | 8 ++++++++ core/dex_preopt_odex_install.mk | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/core/definitions.mk b/core/definitions.mk index 402d9197b..84399bb6f 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -535,6 +535,14 @@ $(strip \ ) endef +########################################################### +## Convert install path to on-device path. +########################################################### +# $(1): install path +define install-path-to-on-device-path +$(patsubst $(PRODUCT_OUT)%,%,$(1)) +endef + ########################################################### ## The intermediates directory. Where object files go for ## a given target. We could technically get away without diff --git a/core/dex_preopt_odex_install.mk b/core/dex_preopt_odex_install.mk index 6300e780d..440ffd99a 100644 --- a/core/dex_preopt_odex_install.mk +++ b/core/dex_preopt_odex_install.mk @@ -235,8 +235,9 @@ ifdef LOCAL_DEX_PREOPT $(call add_json_map, LibraryPaths) $(foreach lib,$(my_dexpreopt_libs),\ $(call add_json_map, $(lib)) \ - $(call add_json_str, Host, $(call intermediates-dir-for,JAVA_LIBRARIES,$(lib),,COMMON)/javalib.jar) \ - $(call add_json_str, Device, /system/framework/$(lib).jar) \ + $(eval file := $(filter %/$(lib).jar, $(call module-installed-files,$(lib)))) \ + $(call add_json_str, Host, $(call intermediates-dir-for,JAVA_LIBRARIES,$(lib),,COMMON)/javalib.jar) \ + $(call add_json_str, Device, $(call install-path-to-on-device-path,$(file))) \ $(call end_json_map)) $(call end_json_map) $(call add_json_list, Archs, $(my_dexpreopt_archs))