Loading Android.mk +10 −11 Original line number Diff line number Diff line Loading @@ -796,21 +796,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)) Loading Loading @@ -839,4 +839,3 @@ include $(call first-makefiles-under,$(LOCAL_PATH)) endif endif # ANDROID_BUILD_EMBEDDED config/hiddenapi-force-blacklist.txt +36 −0 Original line number Diff line number Diff line 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
Android.mk +10 −11 Original line number Diff line number Diff line Loading @@ -796,21 +796,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)) Loading Loading @@ -839,4 +839,3 @@ include $(call first-makefiles-under,$(LOCAL_PATH)) endif endif # ANDROID_BUILD_EMBEDDED
config/hiddenapi-force-blacklist.txt +36 −0 Original line number Diff line number Diff line 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