Android P对非SDK接口的限制 - 黑暗灰名单与黑名单

时间:2018-06-07 13:46:33

标签: android reflection android-9.0-pie android-p-developer-preview

Developer Preview 3今天发布,我注意到一些与非SDK接口相关的更改:

访问以下API会在DP2和DP3上生成不同的日志

Class<?> androidIdClass = Class.forName("com.android.internal.R$id");
Integer search_close_btn = getFieldValue(androidIdClass, null, "search_close_btn");

DP2: Accessing hidden field Lcom/android/internal/R$id;->search_close_btn:I (blacklist, reflection)

结果:NoSuchFieldException,无法访问字段

DP3:Accessing hidden field Lcom/android/internal/R$id;->search_close_btn:I (dark greylist, reflection)

结果:可以访问该字段

可以请某人解释为什么这个字段在DP3中可用以及黑暗灰名单黑名单之间有什么区别?

1 个答案:

答案 0 :(得分:1)

能否请人解释为什么该字段在DP3中可用?

  • Google一直在阻止非SDK呼叫。但是他们也为开发人员打开了论坛,可以在其中报告有关这些问题的信息。 因此,为了回答您的问题,有人可能创建了与此有关的票证,Google可能会考虑将其回滚。有道理吗?

黑名单和黑名单有什么区别?

  • 黑名单是无论您的应用程序要定位到哪个API级别都不会起作用的调用。

  • 暗灰色列表是仅当您的应用程序以API级别28为目标时才起作用的调用,否则它们将正常工作。