forked from openkylin/platform_build
Fix build time preopt with shared library uses.
- Handle hidl libraries. - Handle new shared library encoding. Test: no mismatch preopt during boot. bug: 117845483 bug: 111174995 Change-Id: Ie4bca653594c72df2eb2fdd827bc73cfcb76b1d7
This commit is contained in:
parent
7cac3adf1a
commit
c04f3126f4
|
@ -16,39 +16,54 @@
|
|||
|
||||
set -e
|
||||
|
||||
# inputs:
|
||||
# $1 is PRIVATE_CONDITIONAL_USES_LIBRARIES_HOST
|
||||
# $2 is PRIVATE_CONDITIONAL_USES_LIBRARIES_TARGET
|
||||
|
||||
# class_loader_context: library paths on the host
|
||||
# stored_class_loader_context_libs: library paths on device
|
||||
# these are both comma separated paths, example: lib1.jar:lib2.jar or /system/framework/lib1.jar:/system/framework/lib2.jar
|
||||
|
||||
# target_sdk_version: parsed from manifest
|
||||
# my_conditional_host_libs: libraries conditionally added for non P
|
||||
# my_conditional_target_libs: target libraries conditionally added for non P
|
||||
#
|
||||
# outputs
|
||||
# class_loader_context_arg: final class loader conext arg
|
||||
# stored_class_loader_context_arg: final stored class loader context arg
|
||||
|
||||
my_conditional_host_libs=$1
|
||||
my_conditional_target_libs=$2
|
||||
# The hidl.manager shared library has a dependency on hidl.base. We'll manually
|
||||
# add that information to the class loader context if we see those libraries.
|
||||
hidl_manager="android.hidl.manager-V1.0-java"
|
||||
hidl_base="android.hidl.base-V1.0-java"
|
||||
|
||||
function add_to_contexts {
|
||||
for i in $1; do
|
||||
if [[ -z "${class_loader_context}" ]]; then
|
||||
export class_loader_context="PCL[$i]"
|
||||
else
|
||||
export class_loader_context+="#PCL[$i]"
|
||||
fi
|
||||
if [[ $i == *"$hidl_manager"* ]]; then
|
||||
export class_loader_context+="{PCL[${i/$hidl_manager/$hidl_base}]}"
|
||||
fi
|
||||
done
|
||||
|
||||
for i in $2; do
|
||||
if [[ -z "${stored_class_loader_context}" ]]; then
|
||||
export stored_class_loader_context="PCL[$i]"
|
||||
else
|
||||
export stored_class_loader_context+="#PCL[$i]"
|
||||
fi
|
||||
if [[ $i == *"$hidl_manager"* ]]; then
|
||||
export stored_class_loader_context+="{PCL[${i/$hidl_manager/$hidl_base}]}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# The order below must match what the package manager also computes for
|
||||
# class loader context.
|
||||
|
||||
# Note that SDK 28 is P.
|
||||
if [[ "${target_sdk_version}" -lt "28" ]]; then
|
||||
if [[ -z "${class_loader_context}" ]]; then
|
||||
export class_loader_context="${my_conditional_host_libs}"
|
||||
else
|
||||
export class_loader_context="${my_conditional_host_libs}:${class_loader_context}"
|
||||
fi
|
||||
if [[ -z "${stored_class_loader_context_libs}" ]]; then
|
||||
export stored_class_loader_context_libs="${my_conditional_target_libs}";
|
||||
else
|
||||
export stored_class_loader_context_libs="${my_conditional_target_libs}:${stored_class_loader_context_libs}";
|
||||
fi
|
||||
add_to_contexts "${conditional_host_libs_28}" "${conditional_target_libs_28}"
|
||||
fi
|
||||
|
||||
if [[ "${target_sdk_version}" -lt "29" ]]; then
|
||||
add_to_contexts "${conditional_host_libs_29}" "${conditional_target_libs_29}"
|
||||
fi
|
||||
|
||||
add_to_contexts "${dex_preopt_host_libraries}" "${dex_preopt_target_libraries}"
|
||||
|
||||
# Generate the actual context string.
|
||||
export class_loader_context_arg="--class-loader-context=PCL[${class_loader_context}]"
|
||||
export stored_class_loader_context_arg="--stored-class-loader-context=PCL[${stored_class_loader_context_libs}]"
|
||||
export class_loader_context_arg="--class-loader-context=PCL[]{${class_loader_context}}"
|
||||
export stored_class_loader_context_arg="--stored-class-loader-context=PCL[]{${stored_class_loader_context}}"
|
||||
|
|
|
@ -192,7 +192,7 @@ ifdef LOCAL_DEX_PREOPT
|
|||
$(call add_json_list, OptionalUsesLibraries, $(LOCAL_OPTIONAL_USES_LIBRARIES))
|
||||
$(call add_json_list, UsesLibraries, $(LOCAL_USES_LIBRARIES))
|
||||
$(call add_json_map, LibraryPaths)
|
||||
$(foreach lib,$(sort $(LOCAL_USES_LIBRARIES) $(LOCAL_OPTIONAL_USES_LIBRARIES) org.apache.http.legacy.impl),\
|
||||
$(foreach lib,$(sort $(LOCAL_USES_LIBRARIES) $(LOCAL_OPTIONAL_USES_LIBRARIES) org.apache.http.legacy.impl android.hidl.base-V1.0-java android.hidl.manager-V1.0-java),\
|
||||
$(call add_json_str, $(lib), $(call intermediates-dir-for,JAVA_LIBRARIES,$(lib),,COMMON)/javalib.jar))
|
||||
$(call end_json_map)
|
||||
$(call add_json_list, Archs, $(my_dexpreopt_archs))
|
||||
|
@ -233,7 +233,7 @@ ifdef LOCAL_DEX_PREOPT
|
|||
my_dexpreopt_deps := $(my_dex_jar)
|
||||
my_dexpreopt_deps += $(if $(my_process_profile),$(LOCAL_DEX_PREOPT_PROFILE))
|
||||
my_dexpreopt_deps += \
|
||||
$(foreach lib,$(sort $(LOCAL_USES_LIBRARIES) $(LOCAL_OPTIONAL_USES_LIBRARIES) org.apache.http.legacy.impl),\
|
||||
$(foreach lib,$(sort $(LOCAL_USES_LIBRARIES) $(LOCAL_OPTIONAL_USES_LIBRARIES) org.apache.http.legacy.impl android.hidl.base-V1.0-java android.hidl.manager-V1.0-java),\
|
||||
$(call intermediates-dir-for,JAVA_LIBRARIES,$(lib),,COMMON)/javalib.jar)
|
||||
my_dexpreopt_deps += $(LOCAL_DEX_PREOPT_IMAGE_LOCATION)
|
||||
# TODO: default boot images
|
||||
|
|
Loading…
Reference in New Issue