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
This commit is contained in:
Ulya Trafimovich 2020-06-09 14:36:03 +01:00
parent 1d1bb3b94f
commit 2311f61b12
2 changed files with 11 additions and 2 deletions

View File

@ -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

View File

@ -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))