From 259e1629af9cedeccab4d147b23bc74c50d17b97 Mon Sep 17 00:00:00 2001 From: David Brazdil Date: Tue, 8 May 2018 16:49:02 +0100 Subject: [PATCH] Manualy blacklist certain hidden APIs Previous CL introduced the concept of populating the dark greylist with remaining members of classes on the light greylist. This breaks the assumption that some methods/fields will always remain blacklisted. Introduce a new file which forces their blacklisting and adjust the build rules accordingly. Bug: 64382372 Test: make out/target/common/obj/PACKAGING/hiddenapi-blacklist.txt Merged-In: I8b20e03c50f4027a24d2a6081bedb08bc8a34011 Change-Id: I8b20e03c50f4027a24d2a6081bedb08bc8a34011 (cherry picked from commit 4b34f79a35a6602962ed1df1accd9d6ea6e41e77) --- Android.mk | 7 ++++++- config/hiddenapi-force-blacklist.txt | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 config/hiddenapi-force-blacklist.txt diff --git a/Android.mk b/Android.mk index bf17fba69f4b..e8c5b183be6a 100644 --- a/Android.mk +++ b/Android.mk @@ -593,12 +593,14 @@ LOCAL_BLACKLIST := $(INTERNAL_PLATFORM_HIDDENAPI_BLACKLIST) # File names of source files we will use to generate the final API lists. LOCAL_SRC_GREYLIST := frameworks/base/config/hiddenapi-light-greylist.txt LOCAL_SRC_VENDOR_LIST := frameworks/base/config/hiddenapi-vendor-list.txt +LOCAL_SRC_FORCE_BLACKLIST := frameworks/base/config/hiddenapi-force-blacklist.txt LOCAL_SRC_PRIVATE_API := $(INTERNAL_PLATFORM_PRIVATE_DEX_API_FILE) LOCAL_SRC_REMOVED_API := $(INTERNAL_PLATFORM_REMOVED_DEX_API_FILE) LOCAL_SRC_ALL := \ $(LOCAL_SRC_GREYLIST) \ $(LOCAL_SRC_VENDOR_LIST) \ + $(LOCAL_SRC_FORCE_BLACKLIST) \ $(LOCAL_SRC_PRIVATE_API) \ $(LOCAL_SRC_REMOVED_API) @@ -657,6 +659,7 @@ $(LOCAL_LIGHT_GREYLIST): $(LOCAL_SRC_ALL) > $@ $(call assert-has-no-duplicates,$@) $(call assert-is-subset,$@,$(LOCAL_SRC_PRIVATE_API)) + $(call assert-has-no-overlap,$@,$(LOCAL_SRC_FORCE_BLACKLIST)) # Generate dark greylist as remaining members of classes on the light greylist, # as well as the members of their inner classes. @@ -669,7 +672,7 @@ $(LOCAL_LIGHT_GREYLIST): $(LOCAL_SRC_ALL) # '^Lpackage/class[;$]' # (4) subtract entries shared with LOCAL_LIGHT_GREYLIST $(LOCAL_DARK_GREYLIST): $(LOCAL_SRC_ALL) $(LOCAL_LIGHT_GREYLIST) - comm -13 $(LOCAL_LIGHT_GREYLIST) \ + comm -13 <(sort $(LOCAL_LIGHT_GREYLIST) $(LOCAL_SRC_FORCE_BLACKLIST)) \ <(sed 's/;\->.*//' $(LOCAL_LIGHT_GREYLIST) | sed 's/$$.*//' | sort | uniq | \ while read CLASS_DESC; do \ grep -E "^$${CLASS_DESC}[;$$]" $(LOCAL_SRC_PRIVATE_API); \ @@ -678,6 +681,7 @@ $(LOCAL_DARK_GREYLIST): $(LOCAL_SRC_ALL) $(LOCAL_LIGHT_GREYLIST) $(call assert-is-subset,$@,$(LOCAL_SRC_PRIVATE_API)) $(call assert-has-no-duplicates,$@) $(call assert-has-no-overlap,$@,$(LOCAL_LIGHT_GREYLIST)) + $(call assert-has-no-overlap,$@,$(LOCAL_SRC_FORCE_BLACKLIST)) # Generate blacklist as private API minus (light greylist plus dark greylist). $(LOCAL_BLACKLIST): $(LOCAL_SRC_ALL) $(LOCAL_LIGHT_GREYLIST) $(LOCAL_DARK_GREYLIST) @@ -688,6 +692,7 @@ $(LOCAL_BLACKLIST): $(LOCAL_SRC_ALL) $(LOCAL_LIGHT_GREYLIST) $(LOCAL_DARK_GREYLI $(call assert-has-no-duplicates,$@) $(call assert-has-no-overlap,$@,$(LOCAL_LIGHT_GREYLIST)) $(call assert-has-no-overlap,$@,$(LOCAL_DARK_GREYLIST)) + $(call assert-is-subset,$(LOCAL_SRC_FORCE_BLACKLIST),$@) # Build AOSP blacklist # ============================================================ diff --git a/config/hiddenapi-force-blacklist.txt b/config/hiddenapi-force-blacklist.txt new file mode 100644 index 000000000000..2a10f77b862f --- /dev/null +++ b/config/hiddenapi-force-blacklist.txt @@ -0,0 +1 @@ +Ldalvik/system/VMRuntime;->setHiddenApiExemptions([Ljava/lang/String;)V -- 2.11.0