07a44f48dc
As auto generated RRO, an arbitrary RRO needs to be exempted as well. It is okay because RRO packages can access only resource defined in public.xml, when RRO packages want to refer other package's resource. Bug: 152926556 Test: build RRO packages Test: check if product/vendor app still can't use hidden APIs Change-Id: I8dc2922af5eb5c87ccd97d1b8d080b3ed48cf9a6
64 lines
3 KiB
Makefile
64 lines
3 KiB
Makefile
#
|
|
# Copyright (C) 2018 The Android Open Source Project
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
ifdef BOARD_SYSTEMSDK_VERSIONS
|
|
# Apps and jars in vendor, product or odm partition are forced to build against System SDK.
|
|
_cannot_use_platform_apis :=
|
|
ifneq (,$(filter true,$(LOCAL_VENDOR_MODULE) $(LOCAL_ODM_MODULE) $(LOCAL_PROPRIETARY_MODULE)))
|
|
# Note: no need to check LOCAL_MODULE_PATH* since LOCAL_[VENDOR|ODM|OEM]_MODULE is already
|
|
# set correctly before this is included.
|
|
_cannot_use_platform_apis := true
|
|
else ifeq ($(LOCAL_PRODUCT_MODULE),true)
|
|
ifeq ($(PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE),true)
|
|
_cannot_use_platform_apis := true
|
|
endif
|
|
endif
|
|
ifneq (,$(filter JAVA_LIBRARIES APPS,$(LOCAL_MODULE_CLASS)))
|
|
ifndef LOCAL_SDK_VERSION
|
|
ifeq ($(_cannot_use_platform_apis),true)
|
|
ifeq (,$(LOCAL_IS_RUNTIME_RESOURCE_OVERLAY))
|
|
# Runtime resource overlays are exempted from building against System SDK.
|
|
# TODO(b/155027019): remove this, after no product/vendor apps rely on this behavior.
|
|
LOCAL_SDK_VERSION := system_current
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# Ensure that the selected System SDK version is one of the supported versions.
|
|
# The range of support versions becomes narrower when BOARD_SYSTEMSDK_VERSIONS
|
|
# is set, which is a subset of PLATFORM_SYSTEMSDK_VERSIONS.
|
|
ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION)))
|
|
ifneq ($(_cannot_use_platform_apis),true)
|
|
# apps bundled in system partition can use all system sdk versions provided by the platform
|
|
_supported_systemsdk_versions := $(PLATFORM_SYSTEMSDK_VERSIONS)
|
|
else ifdef BOARD_SYSTEMSDK_VERSIONS
|
|
# When BOARD_SYSTEMSDK_VERSIONS is set, vendors apps are restricted to use those versions
|
|
# which is equal to or smaller than PLATFORM_SYSTEMSDK_VERSIONS
|
|
_supported_systemsdk_versions := $(BOARD_SYSTEMSDK_VERSIONS)
|
|
else
|
|
# If not, vendor apks are treated equally to system apps
|
|
_supported_systemsdk_versions := $(PLATFORM_SYSTEMSDK_VERSIONS)
|
|
endif
|
|
_system_sdk_version := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION))
|
|
ifneq ($(_system_sdk_version),$(filter $(_system_sdk_version),$(_supported_systemsdk_versions)))
|
|
$(call pretty-error,Incompatible LOCAL_SDK_VERSION '$(LOCAL_SDK_VERSION)'. \
|
|
System SDK version '$(_system_sdk_version)' is not supported. Supported versions are: $(_supported_systemsdk_versions))
|
|
endif
|
|
_system_sdk_version :=
|
|
_supported_systemsdk_versions :=
|
|
endif
|