summaryrefslogtreecommitdiff
path: root/Android.mk
diff options
context:
space:
mode:
authorDavid Brazdil <dbrazdil@google.com>2018-03-26 16:02:23 +0100
committerDavid Brazdil <dbrazdil@google.com>2018-03-27 16:54:53 +0000
commit357170b1803ddd8ed57c75f46b8c6d226c464309 (patch)
tree46d085e4e1899ed6e803fe255f5fdbd42f03a4f8 /Android.mk
parentd21b33d8cadeb3d618e31031939f9d26ab1f6c17 (diff)
Add serialization methods to hidden API light greylist
This patch adds a build-time rule that adds all members with signatures: readObject(Ljava/io/ObjectInputStream;)V readObjectNoData()V readResolve()Ljava/lang/Object; serialVersionUID:J serialPersistentFields:[Ljava/io/ObjectStreamField writeObject(Ljava/io/ObjectOutputStream;)V writeReplace()Ljava/lang/Object; to the hidden API light greylist. This is needed so that apps can retain the ability to write their own serializers. Bug: 64382372 Bug: 73255398 Test: make Change-Id: I0103f47044e957bbff0a39230ff53562f3feddac
Diffstat (limited to 'Android.mk')
-rw-r--r--Android.mk20
1 files changed, 18 insertions, 2 deletions
diff --git a/Android.mk b/Android.mk
index e2f88e8990bd..b630c3f3aa8e 100644
--- a/Android.mk
+++ b/Android.mk
@@ -869,11 +869,27 @@ include $(BUILD_STATIC_JAVA_LIBRARY)
$(eval $(call copy-one-file,frameworks/base/config/hiddenapi-blacklist.txt,\
$(INTERNAL_PLATFORM_HIDDENAPI_BLACKLIST)))
+# Automatically add all methods which match the following signatures.
+# These need to be greylisted in order to allow applications to write their
+# own serializers.
+$(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST): REGEX_SERIALIZATION := \
+ "readObject\(Ljava/io/ObjectInputStream;\)V" \
+ "readObjectNoData\(\)V" \
+ "readResolve\(\)Ljava/lang/Object;" \
+ "serialVersionUID:J" \
+ "serialPersistentFields:\[Ljava/io/ObjectStreamField;" \
+ "writeObject\(Ljava/io/ObjectOutputStream;\)V" \
+ "writeReplace\(\)Ljava/lang/Object;"
+$(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST): PRIVATE_API := $(INTERNAL_PLATFORM_PRIVATE_DEX_API_FILE)
# Temporarily merge light greylist from two files. Vendor list will become dark
# grey once we remove the UI toast.
$(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST): frameworks/base/config/hiddenapi-light-greylist.txt \
- frameworks/base/config/hiddenapi-vendor-list.txt
- sort $^ > $@
+ frameworks/base/config/hiddenapi-vendor-list.txt \
+ $(INTERNAL_PLATFORM_PRIVATE_DEX_API_FILE)
+ sort frameworks/base/config/hiddenapi-light-greylist.txt \
+ frameworks/base/config/hiddenapi-vendor-list.txt \
+ <(grep -E "\->("$(subst $(space),"|",$(REGEX_SERIALIZATION))")$$" $(PRIVATE_API)) \
+ > $@
# Generate dark greylist as private API minus (blacklist plus light greylist).