Support LOCAL_SDK_VERSION := core_current

core_current is a pseudo SDK version which is a core Java API subset of
the Android API. It is expected to be mainly used for external Java
projects which are agnostic to Android; such as junit, guava, etc.

A module built with this SDK version can only link to java modules of
the same kind. It can't depend on modules built with LOCAL_SDK_VERSION
:= current or without LOCAL_SDK_VERSION.

Bug: 72206056
Test: m -j
Change-Id: I34a9696393aa6704fd6684a40ea5b05d3fb46b23
This commit is contained in:
Jiyong Park 2018-01-31 00:14:55 +09:00 committed by Sundong Ahn
parent 4b4c3d91b0
commit 5ebca30d21
11 changed files with 49 additions and 26 deletions

View File

@ -927,8 +927,8 @@ TARGET_AVAILABLE_SDK_VERSIONS := $(addprefix system_,$(call numerically_sort,\
$(wildcard $(HISTORICAL_SDK_VERSIONS_ROOT)/*/android_system.jar)))) \ $(wildcard $(HISTORICAL_SDK_VERSIONS_ROOT)/*/android_system.jar)))) \
$(TARGET_AVAILABLE_SDK_VERSIONS) $(TARGET_AVAILABLE_SDK_VERSIONS)
# We don't have prebuilt test_current SDK yet. # We don't have prebuilt test_current and core_current SDK yet.
TARGET_AVAILABLE_SDK_VERSIONS := test_current $(TARGET_AVAILABLE_SDK_VERSIONS) TARGET_AVAILABLE_SDK_VERSIONS := test_current core_current $(TARGET_AVAILABLE_SDK_VERSIONS)
TARGET_SDK_VERSIONS_WITHOUT_JAVA_18_SUPPORT := $(call numbers_less_than,24,$(TARGET_AVAILABLE_SDK_VERSIONS)) 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,27,$(TARGET_AVAILABLE_SDK_VERSIONS)) TARGET_SDK_VERSIONS_WITHOUT_JAVA_19_SUPPORT := $(call numbers_less_than,27,$(TARGET_AVAILABLE_SDK_VERSIONS))

View File

@ -18,7 +18,7 @@ $(built_dpi_apk): PRIVATE_RESOURCE_DIR := $(LOCAL_RESOURCE_DIR)
$(built_dpi_apk): PRIVATE_ASSET_DIR := $(LOCAL_ASSET_DIR) $(built_dpi_apk): PRIVATE_ASSET_DIR := $(LOCAL_ASSET_DIR)
$(built_dpi_apk): PRIVATE_AAPT_INCLUDES := $(all_library_res_package_exports) $(built_dpi_apk): PRIVATE_AAPT_INCLUDES := $(all_library_res_package_exports)
$(built_dpi_apk): PRIVATE_RESOURCE_LIST := $(all_res_assets) $(built_dpi_apk): PRIVATE_RESOURCE_LIST := $(all_res_assets)
ifneq (,$(filter-out current system_current test_current, $(LOCAL_SDK_VERSION))) ifneq (,$(filter-out current system_current test_current core_current, $(LOCAL_SDK_VERSION)))
$(built_dpi_apk): PRIVATE_DEFAULT_APP_TARGET_SDK := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION)) $(built_dpi_apk): PRIVATE_DEFAULT_APP_TARGET_SDK := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION))
else else
$(built_dpi_apk): PRIVATE_DEFAULT_APP_TARGET_SDK := $(DEFAULT_APP_TARGET_SDK) $(built_dpi_apk): PRIVATE_DEFAULT_APP_TARGET_SDK := $(DEFAULT_APP_TARGET_SDK)

View File

@ -71,6 +71,9 @@ ifneq ($(LOCAL_SDK_VERSION),)
else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),test_current) else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),test_current)
LOCAL_JAVA_LIBRARIES := android_test_stubs_current $(LOCAL_JAVA_LIBRARIES) LOCAL_JAVA_LIBRARIES := android_test_stubs_current $(LOCAL_JAVA_LIBRARIES)
$(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_test_stubs_current) $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_test_stubs_current)
else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),core_current)
LOCAL_JAVA_LIBRARIES := core.current.stubs $(LOCAL_JAVA_LIBRARIES)
$(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, core.current.stubs)
else else
ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION))) ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION)))
ifeq (,$(TARGET_BUILD_APPS)) ifeq (,$(TARGET_BUILD_APPS))
@ -81,8 +84,12 @@ ifneq ($(LOCAL_SDK_VERSION),)
$(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, sdk_v$(LOCAL_SDK_VERSION)) $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, sdk_v$(LOCAL_SDK_VERSION))
endif endif
else else
LOCAL_JAVA_LIBRARIES := sdk_v$(LOCAL_SDK_VERSION) $(LOCAL_JAVA_LIBRARIES) # core_<ver> is subset of <ver>. Instead of defining a prebuilt lib for core_<ver>,
$(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, sdk_v$(LOCAL_SDK_VERSION)) # use the stub for <ver> when building for apps.
_version := $(patsubst core_%,%,$(LOCAL_SDK_VERSION))
LOCAL_JAVA_LIBRARIES := sdk_v$(_version) $(LOCAL_JAVA_LIBRARIES)
$(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, sdk_v$(_version))
_version :=
endif endif
endif endif
else else

View File

@ -193,7 +193,7 @@ $(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources)
endif # !LOCAL_IS_STATIC_JAVA_LIBRARY endif # !LOCAL_IS_STATIC_JAVA_LIBRARY
ifneq (,$(filter-out current system_current test_current, $(LOCAL_SDK_VERSION))) ifneq (,$(filter-out current system_current test_current core_current, $(LOCAL_SDK_VERSION)))
my_default_app_target_sdk := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION)) my_default_app_target_sdk := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION))
my_sdk_version := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION)) my_sdk_version := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION))
else else

View File

@ -124,7 +124,7 @@ ifneq (,$(LOCAL_RENDERSCRIPT_TARGET_API))
else else
ifneq (,$(LOCAL_SDK_VERSION)) ifneq (,$(LOCAL_SDK_VERSION))
# Set target-api for LOCAL_SDK_VERSIONs other than current. # Set target-api for LOCAL_SDK_VERSIONs other than current.
ifneq (,$(filter-out current system_current test_current, $(LOCAL_SDK_VERSION))) ifneq (,$(filter-out current system_current test_current core_current, $(LOCAL_SDK_VERSION)))
renderscript_target_api := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION)) renderscript_target_api := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION))
endif endif
endif # LOCAL_SDK_VERSION is set endif # LOCAL_SDK_VERSION is set
@ -149,7 +149,7 @@ renderscript_flags := -Wall -Werror
renderscript_flags += $(LOCAL_RENDERSCRIPT_FLAGS) renderscript_flags += $(LOCAL_RENDERSCRIPT_FLAGS)
# prepend the RenderScript system include path # prepend the RenderScript system include path
ifneq ($(filter-out current system_current test_current,$(LOCAL_SDK_VERSION))$(if $(TARGET_BUILD_APPS),$(filter current system_current test_current,$(LOCAL_SDK_VERSION))),) ifneq ($(filter-out current system_current test_current core_current,$(LOCAL_SDK_VERSION))$(if $(TARGET_BUILD_APPS),$(filter current system_current test_current,$(LOCAL_SDK_VERSION))),)
# if a numeric LOCAL_SDK_VERSION, or current LOCAL_SDK_VERSION with TARGET_BUILD_APPS # if a numeric LOCAL_SDK_VERSION, or current LOCAL_SDK_VERSION with TARGET_BUILD_APPS
LOCAL_RENDERSCRIPT_INCLUDES := \ LOCAL_RENDERSCRIPT_INCLUDES := \
$(HISTORICAL_SDK_VERSIONS_ROOT)/renderscript/clang-include \ $(HISTORICAL_SDK_VERSIONS_ROOT)/renderscript/clang-include \
@ -265,7 +265,7 @@ ifneq ($(strip $(aidl_sources)),)
aidl_preprocess_import := aidl_preprocess_import :=
ifdef LOCAL_SDK_VERSION ifdef LOCAL_SDK_VERSION
ifneq ($(filter current system_current test_current, $(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS)),) ifneq ($(filter current system_current test_current core_current, $(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS)),)
# LOCAL_SDK_VERSION is current and no TARGET_BUILD_APPS # LOCAL_SDK_VERSION is current and no TARGET_BUILD_APPS
aidl_preprocess_import := $(TARGET_OUT_COMMON_INTERMEDIATES)/framework.aidl aidl_preprocess_import := $(TARGET_OUT_COMMON_INTERMEDIATES)/framework.aidl
else else
@ -609,7 +609,7 @@ proguard_dictionary := $(intermediates.COMMON)/proguard_dictionary
my_proguard_sdk_raise := my_proguard_sdk_raise :=
ifdef LOCAL_SDK_VERSION ifdef LOCAL_SDK_VERSION
ifdef TARGET_BUILD_APPS ifdef TARGET_BUILD_APPS
ifeq (,$(filter current system_current test_current, $(LOCAL_SDK_VERSION))) ifeq (,$(filter current system_current test_current core_current, $(LOCAL_SDK_VERSION)))
my_proguard_sdk_raise := $(call java-lib-header-files, sdk_vcurrent) my_proguard_sdk_raise := $(call java-lib-header-files, sdk_vcurrent)
endif endif
else else
@ -798,7 +798,7 @@ $(LOCAL_MODULE)-findbugs : $(findbugs_html)
endif # full_classes_jar is defined endif # full_classes_jar is defined
ifneq (,$(filter-out current system_current test_current, $(LOCAL_SDK_VERSION))) ifneq (,$(filter-out current system_current test_current core_current, $(LOCAL_SDK_VERSION)))
my_default_app_target_sdk := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION)) my_default_app_target_sdk := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION))
my_sdk_version := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION)) my_sdk_version := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION))
else else

View File

@ -258,6 +258,8 @@ ifndef LOCAL_IS_HOST_MODULE
full_java_bootclasspath_libs := $(call java-lib-header-files,android_system_stubs_current) full_java_bootclasspath_libs := $(call java-lib-header-files,android_system_stubs_current)
else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),test_current) else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),test_current)
full_java_bootclasspath_libs := $(call java-lib-header-files,android_test_stubs_current) full_java_bootclasspath_libs := $(call java-lib-header-files,android_test_stubs_current)
else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),core_current)
full_java_bootclasspath_libs := $(call java-lib-header-files,core.current.stubs)
else else
ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION))) ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION)))
ifeq (,$(TARGET_BUILD_APPS)) ifeq (,$(TARGET_BUILD_APPS))
@ -266,9 +268,13 @@ ifndef LOCAL_IS_HOST_MODULE
full_java_bootclasspath_libs := $(call java-lib-header-files,sdk_v$(LOCAL_SDK_VERSION)) full_java_bootclasspath_libs := $(call java-lib-header-files,sdk_v$(LOCAL_SDK_VERSION))
endif endif
else else
full_java_bootclasspath_libs := $(call java-lib-header-files,sdk_v$(LOCAL_SDK_VERSION)) # core_<ver> is subset of <ver>. Instead of defining a prebuilt lib for core_<ver>,
# use the stub for <ver> when building for apps.
_version := $(patsubst core_%,%,$(LOCAL_SDK_VERSION))
full_java_bootclasspath_libs := $(call java-lib-header-files,sdk_v$(_version))
_version :=
endif endif
endif # current, system_current, system_${VER} or test_current endif # current, system_current, system_${VER}, test_current or core_current
endif # LOCAL_SDK_VERSION endif # LOCAL_SDK_VERSION
ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true)
@ -460,19 +466,23 @@ ifndef LOCAL_IS_HOST_MODULE
ifeq ($(LOCAL_SDK_VERSION),system_current) ifeq ($(LOCAL_SDK_VERSION),system_current)
my_link_type := java:system my_link_type := java:system
my_warn_types := java:platform my_warn_types := java:platform
my_allowed_types := java:sdk java:system my_allowed_types := java:sdk java:system java:core
else ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION))) else ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION)))
my_link_type := java:system my_link_type := java:system
my_warn_types := java:platform my_warn_types := java:platform
my_allowed_types := java:sdk java:system my_allowed_types := java:sdk java:system java:core
else ifeq ($(LOCAL_SDK_VERSION),core_current)
my_link_type := java:core
my_warn_types :=
my_allowed_types := java:core
else ifneq ($(LOCAL_SDK_VERSION),) else ifneq ($(LOCAL_SDK_VERSION),)
my_link_type := java:sdk my_link_type := java:sdk
my_warn_types := java:system java:platform my_warn_types := java:system java:platform
my_allowed_types := java:sdk my_allowed_types := java:sdk java:core
else else
my_link_type := java:platform my_link_type := java:platform
my_warn_types := my_warn_types :=
my_allowed_types := java:sdk java:system java:platform my_allowed_types := java:sdk java:system java:platform java:core
endif endif
ifdef LOCAL_AAPT2_ONLY ifdef LOCAL_AAPT2_ONLY

View File

@ -394,7 +394,7 @@ renderscript_target_api := $(LOCAL_RENDERSCRIPT_TARGET_API)
else else
ifneq (,$(LOCAL_SDK_VERSION)) ifneq (,$(LOCAL_SDK_VERSION))
# Set target-api for LOCAL_SDK_VERSIONs other than current. # Set target-api for LOCAL_SDK_VERSIONs other than current.
ifneq (,$(filter-out current system_current test_current, $(LOCAL_SDK_VERSION))) ifneq (,$(filter-out current system_current test_current core_current, $(LOCAL_SDK_VERSION)))
renderscript_target_api := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION)) renderscript_target_api := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION))
endif endif
endif # LOCAL_SDK_VERSION is set endif # LOCAL_SDK_VERSION is set

View File

@ -546,6 +546,8 @@ ifeq ($(LOCAL_SDK_VERSION),system_current)
my_link_type := java:system my_link_type := java:system
else ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION))) else ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION)))
my_link_type := java:system my_link_type := java:system
else ifeq ($(LOCAL_SDK_VERSION),core_current)
my_link_type := java:core
else ifneq ($(LOCAL_SDK_VERSION),) else ifneq ($(LOCAL_SDK_VERSION),)
my_link_type := java:sdk my_link_type := java:sdk
else else

View File

@ -78,15 +78,15 @@ ifndef LOCAL_IS_HOST_MODULE
ifeq ($(LOCAL_SDK_VERSION),system_current) ifeq ($(LOCAL_SDK_VERSION),system_current)
my_link_type := java:system my_link_type := java:system
my_warn_types := java:platform my_warn_types := java:platform
my_allowed_types := java:sdk java:system my_allowed_types := java:sdk java:system java:core
else ifneq ($(LOCAL_SDK_VERSION),) else ifneq ($(LOCAL_SDK_VERSION),)
my_link_type := java:sdk my_link_type := java:sdk
my_warn_types := java:system java:platform my_warn_types := java:system java:platform
my_allowed_types := java:sdk my_allowed_types := java:sdk java:core
else else
my_link_type := java:platform my_link_type := java:platform
my_warn_types := my_warn_types :=
my_allowed_types := java:sdk java:system java:platform my_allowed_types := java:sdk java:system java:platform java:core
endif endif
my_link_deps := my_link_deps :=

View File

@ -86,19 +86,23 @@ ifndef LOCAL_IS_HOST_MODULE
ifeq ($(LOCAL_SDK_VERSION),system_current) ifeq ($(LOCAL_SDK_VERSION),system_current)
my_link_type := java:system my_link_type := java:system
my_warn_types := java:platform my_warn_types := java:platform
my_allowed_types := java:sdk java:system my_allowed_types := java:sdk java:system java:core
else ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION))) else ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION)))
my_link_type := java:system my_link_type := java:system
my_warn_types := java:platform my_warn_types := java:platform
my_allowed_types := java:sdk java:system my_allowed_types := java:sdk java:system java:core
else ifeq ($(LOCAL_SDK_VERSION),core_current)
my_link_type := java:core
my_warn_types :=
my_allowed_types := java:core
else ifneq ($(LOCAL_SDK_VERSION),) else ifneq ($(LOCAL_SDK_VERSION),)
my_link_type := java:sdk my_link_type := java:sdk
my_warn_types := java:system java:platform my_warn_types := java:system java:platform
my_allowed_types := java:sdk my_allowed_types := java:sdk java:core
else else
my_link_type := java:platform my_link_type := java:platform
my_warn_types := my_warn_types :=
my_allowed_types := java:sdk java:system java:platform my_allowed_types := java:sdk java:system java:platform java:core
endif endif
my_link_deps := my_link_deps :=

View File

@ -156,7 +156,7 @@ renderscript_target_api := $(LOCAL_RENDERSCRIPT_TARGET_API)
else else
ifneq (,$(LOCAL_SDK_VERSION)) ifneq (,$(LOCAL_SDK_VERSION))
# Set target-api for LOCAL_SDK_VERSIONs other than current. # Set target-api for LOCAL_SDK_VERSIONs other than current.
ifneq (,$(filter-out current system_current test_current, $(LOCAL_SDK_VERSION))) ifneq (,$(filter-out current system_current test_current core_current, $(LOCAL_SDK_VERSION)))
renderscript_target_api := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION)) renderscript_target_api := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION))
endif endif
endif # LOCAL_SDK_VERSION is set endif # LOCAL_SDK_VERSION is set