Include in hidden API dark greylist based on package name
Dark greylist has so far been populated with the remaining class members of classes listed on the light greylist. This patch changes the rule to include all remaining classes and class members in the same package (sub-packages not included). Bug: 64382372 Test: make -j64 out/target/common/obj/PACKAGING/hiddenapi-dark-greylist.txt Change-Id: Icf3f60f1e776f092103c612fc3995ce0e66617ea Merged-In: Icf3f60f1e776f092103c612fc3995ce0e66617ea (cherry picked from commit 4c3c03129ba95dccab30ba7579dc91b97843271f)
This commit is contained in:
parent
1c5811d34d
commit
f24f0a9c71
21
Android.mk
21
Android.mk
@ -661,21 +661,21 @@ $(LOCAL_LIGHT_GREYLIST): $(LOCAL_SRC_ALL)
|
||||
$(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.
|
||||
# Generate dark greylist as remaining classes and class members in the same
|
||||
# package as classes listed in the light greylist.
|
||||
# The algorithm is as follows:
|
||||
# (1) extract the class descriptor from each entry in LOCAL_LIGHT_GREYLIST
|
||||
# (2) strip the final semicolon and anything after (and including) a dollar sign,
|
||||
# e.g. 'Lpackage/class$inner;' turns into 'Lpackage/class'
|
||||
# (3) insert all entries from LOCAL_SRC_PRIVATE_API which begin with the stripped
|
||||
# descriptor followed by a semi-colon or a dollar sign, e.g. matching a regex
|
||||
# '^Lpackage/class[;$]'
|
||||
# (2) strip everything after the last forward-slash,
|
||||
# e.g. 'Lpackage/subpackage/class$inner;' turns into 'Lpackage/subpackage/'
|
||||
# (3) insert all entries from LOCAL_SRC_PRIVATE_API which begin with the package
|
||||
# name but do not contain another forward-slash in the class name, e.g.
|
||||
# matching '^Lpackage/subpackage/[^/;]*;'
|
||||
# (4) subtract entries shared with LOCAL_LIGHT_GREYLIST
|
||||
$(LOCAL_DARK_GREYLIST): $(LOCAL_SRC_ALL) $(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); \
|
||||
<(sed 's/\->.*//' $(LOCAL_LIGHT_GREYLIST) | sed 's/\(.*\/\).*/\1/' | sort | uniq | \
|
||||
while read PKG_NAME; do \
|
||||
grep -E "^$${PKG_NAME}[^/;]*;" $(LOCAL_SRC_PRIVATE_API); \
|
||||
done | sort | uniq) \
|
||||
> $@
|
||||
$(call assert-is-subset,$@,$(LOCAL_SRC_PRIVATE_API))
|
||||
@ -718,4 +718,3 @@ include $(call first-makefiles-under,$(LOCAL_PATH))
|
||||
endif
|
||||
|
||||
endif # ANDROID_BUILD_EMBEDDED
|
||||
|
||||
|
@ -1 +1,37 @@
|
||||
Ldalvik/system/VMRuntime;->setHiddenApiExemptions([Ljava/lang/String;)V
|
||||
Ljava/lang/invoke/VarHandle;->acquireFence()V
|
||||
Ljava/lang/invoke/VarHandle;->compareAndExchange([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->compareAndExchangeAcquire([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->compareAndExchangeRelease([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->compareAndSet([[Ljava/lang/Object;)Z
|
||||
Ljava/lang/invoke/VarHandle;->fullFence()V
|
||||
Ljava/lang/invoke/VarHandle;->get([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAcquire([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndAdd([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndAddAcquire([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndAddRelease([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndBitwiseAnd([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndBitwiseAndAcquire([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndBitwiseAndRelease([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndBitwiseOr([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndBitwiseOrAcquire([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndBitwiseOrRelease([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndBitwiseXor([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndBitwiseXorAcquire([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndBitwiseXorRelease([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndSet([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndSetAcquire([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getAndSetRelease([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getOpaque([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->getVolatile([[Ljava/lang/Object;)Ljava/lang/Object;
|
||||
Ljava/lang/invoke/VarHandle;->loadLoadFence()V
|
||||
Ljava/lang/invoke/VarHandle;->releaseFence()V
|
||||
Ljava/lang/invoke/VarHandle;->set([[Ljava/lang/Object;)V
|
||||
Ljava/lang/invoke/VarHandle;->setOpaque([[Ljava/lang/Object;)V
|
||||
Ljava/lang/invoke/VarHandle;->setRelease([[Ljava/lang/Object;)V
|
||||
Ljava/lang/invoke/VarHandle;->setVolatile([[Ljava/lang/Object;)V
|
||||
Ljava/lang/invoke/VarHandle;->storeStoreFence()V
|
||||
Ljava/lang/invoke/VarHandle;->weakCompareAndSet([[Ljava/lang/Object;)Z
|
||||
Ljava/lang/invoke/VarHandle;->weakCompareAndSetAcquire([[Ljava/lang/Object;)Z
|
||||
Ljava/lang/invoke/VarHandle;->weakCompareAndSetPlain([[Ljava/lang/Object;)Z
|
||||
Ljava/lang/invoke/VarHandle;->weakCompareAndSetRelease([[Ljava/lang/Object;)Z
|
||||
|
Loading…
x
Reference in New Issue
Block a user