diff --git a/core/config.mk b/core/config.mk index 0e2d2719f5..b1c03890e4 100644 --- a/core/config.mk +++ b/core/config.mk @@ -1208,13 +1208,6 @@ TARGET_AVAIALBLE_SDK_VERSIONS := $(call numerically_sort,$(TARGET_AVAILABLE_SDK_ TARGET_SDK_VERSIONS_WITHOUT_JAVA_18_SUPPORT := $(call numbers_less_than,24,$(TARGET_AVAILABLE_SDK_VERSIONS)) TARGET_SDK_VERSIONS_WITHOUT_JAVA_19_SUPPORT := $(call numbers_less_than,30,$(TARGET_AVAILABLE_SDK_VERSIONS)) -# Missing optional uses-libraries so that the platform doesn't create build rules that depend on -# them. -INTERNAL_PLATFORM_MISSING_USES_LIBRARIES := \ - com.google.android.ble \ - com.google.android.media.effects \ - com.google.android.wearable \ - # This is the standard way to name a directory containing prebuilt target # objects. E.g., prebuilt/$(TARGET_PREBUILT_TAG)/libc.so TARGET_PREBUILT_TAG := android-$(TARGET_ARCH) diff --git a/core/dex_preopt_odex_install.mk b/core/dex_preopt_odex_install.mk index 2cf23a7da5..14fafa1fb3 100644 --- a/core/dex_preopt_odex_install.mk +++ b/core/dex_preopt_odex_install.mk @@ -111,18 +111,19 @@ endif # Local module variables and functions used in dexpreopt and manifest_check. ################################################################################ -my_filtered_optional_uses_libraries := $(filter-out $(INTERNAL_PLATFORM_MISSING_USES_LIBRARIES), \ - $(LOCAL_OPTIONAL_USES_LIBRARIES)) - # TODO(b/132357300): This may filter out too much, as PRODUCT_PACKAGES doesn't # include all packages (the full list is unknown until reading all Android.mk # makefiles). As a consequence, a library may be present but not included in # dexpreopt, which will result in class loader context mismatch and a failure -# to load dexpreopt code on device. We should fix this, either by deferring -# dependency computation until the full list of product packages is known, or -# by adding product-specific lists of missing libraries. +# to load dexpreopt code on device. +# However, we have to do filtering here. Otherwise, we may include extra +# libraries that Soong and Make don't generate build rules for (e.g., a library +# that exists in the source tree but not installable), and therefore get Ninja +# errors. +# We have deferred CLC computation to the Ninja phase, but the dependency +# computation still needs to be done early. For now, this is the best we can do. my_filtered_optional_uses_libraries := $(filter $(PRODUCT_PACKAGES), \ - $(my_filtered_optional_uses_libraries)) + $(LOCAL_OPTIONAL_USES_LIBRARIES)) ifeq ($(LOCAL_MODULE_CLASS),APPS) # compatibility libraries are added to class loader context of an app only if diff --git a/core/soong_config.mk b/core/soong_config.mk index 5a62a0e124..46f06f7f4e 100644 --- a/core/soong_config.mk +++ b/core/soong_config.mk @@ -251,8 +251,6 @@ $(call add_json_list, ProductPrivateSepolicyDirs, $(PRODUCT_PRIVATE_SEPOL $(call add_json_list, TargetFSConfigGen, $(TARGET_FS_CONFIG_GEN)) -$(call add_json_list, MissingUsesLibraries, $(INTERNAL_PLATFORM_MISSING_USES_LIBRARIES)) - $(call add_json_map, VendorVars) $(foreach namespace,$(sort $(SOONG_CONFIG_NAMESPACES)),\ $(call add_json_map, $(namespace))\