From 0538ff796f1d17c084bc0b54cb2177faacda8919 Mon Sep 17 00:00:00 2001 From: Jaekyun Seok Date: Tue, 16 Jan 2018 14:14:59 +0900 Subject: [PATCH] Enforce PRODUCT_COMPATIBLE_PROPERTY for products shipping with Android P PRODUCT_COMPATIBLE_PROPERTY will be set as true for products shipping with Android P, and ro.actionable_compatible_property.enabled will be set as a system default property accordingly. But if PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE is set, ro.actionable_compatible_property.enabled will be false. Bug: 38146102 Test: tested on walleye with PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE=true Merged-In: Ifc1279a360b140c4d94edd32db7de3c6c7317297 Change-Id: Ifc1279a360b140c4d94edd32db7de3c6c7317297 (cherry picked from commit 2528cd26c0140248e83c4f232b080aa962b90026) --- core/config.mk | 13 +++++++++++++ core/main.mk | 8 ++++++++ core/product.mk | 2 ++ core/product_config.mk | 8 ++++++++ 4 files changed, 31 insertions(+) diff --git a/core/config.mk b/core/config.mk index 255c8486c..616784fa8 100644 --- a/core/config.mk +++ b/core/config.mk @@ -742,6 +742,19 @@ APICHECK_CLASSPATH := $(subst $(space),:,$(strip $(APICHECK_CLASSPATH_ENTRIES))) APICHECK_COMMAND := $(APICHECK) -JXmx1024m -J"classpath $(APICHECK_CLASSPATH)" +# Boolean variable determining if the whitelist for compatible properties is enabled +PRODUCT_COMPATIBLE_PROPERTY := false +ifneq ($(PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE),) + PRODUCT_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE) +else ifeq ($(PRODUCT_SHIPPING_API_LEVEL),) + #$(warning no product shipping level defined) +else ifneq ($(call math_lt,27,$(PRODUCT_SHIPPING_API_LEVEL)),) + PRODUCT_COMPATIBLE_PROPERTY := true +endif + +.KATI_READONLY := \ + PRODUCT_COMPATIBLE_PROPERTY + # Boolean variable determining if Treble is fully enabled PRODUCT_FULL_TREBLE := false ifneq ($(PRODUCT_FULL_TREBLE_OVERRIDE),) diff --git a/core/main.mk b/core/main.mk index fe178da45..93c8d3b84 100644 --- a/core/main.mk +++ b/core/main.mk @@ -205,6 +205,14 @@ $(KATI_obsolete_var PRODUCT_FULL_TREBLE,\ variables like PRODUCT_SEPOLICY_SPLIT should be used until that is \ possible.) +# Sets ro.actionable_compatible_property.enabled to know on runtime whether the whitelist +# of actionable compatible properties is enabled or not. +ifeq ($(PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE),true) +ADDITIONAL_DEFAULT_PROPERTIES += ro.actionable_compatible_property.enabled=false +else +ADDITIONAL_DEFAULT_PROPERTIES += ro.actionable_compatible_property.enabled=${PRODUCT_COMPATIBLE_PROPERTY} +endif + # ----------------------------------------------------------------- ### ### In this section we set up the things that are different diff --git a/core/product.mk b/core/product.mk index f15f6b370..77f78a67f 100644 --- a/core/product.mk +++ b/core/product.mk @@ -149,6 +149,8 @@ _product_var_list := \ PRODUCT_ADB_KEYS \ PRODUCT_CFI_INCLUDE_PATHS \ PRODUCT_CFI_EXCLUDE_PATHS \ + PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE \ + PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE \ define dump-product $(info ==== $(1) ====)\ diff --git a/core/product_config.mk b/core/product_config.mk index 5b0e2574e..2cd801633 100644 --- a/core/product_config.mk +++ b/core/product_config.mk @@ -484,3 +484,11 @@ PRODUCT_CFI_INCLUDE_PATHS := \ # which Soong namespaces to export to Make PRODUCT_SOONG_NAMESPACES := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SOONG_NAMESPACES)) + +# A flag to override PRODUCT_COMPATIBLE_PROPERTY +PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := \ + $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE)) + +# Whether the whitelist of actionable compatible properties should be disabled or not +PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE := \ + $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE))