非 SDK 接口的安卓 P 限制 - 深灰名单与黑名单



开发人员预览版 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中可用,深灰名单和黑名单有什么区别?

有人可以解释为什么这个字段在 DP3 中可用吗?

  • Google 一直在阻止非 SDK 调用。但他们也为开发人员开放了论坛,可以报告有关这些问题的问题。 因此,为了回答您的问题,有人可能已经创建了一个关于此的票证,Google可能已经考虑回滚。有意义?

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

  • 黑名单是无论应用程序的目标 API 级别如何都不起作用的调用。

  • 深灰名单是当且仅当应用程序面向 API 级别 28 时不起作用的调用,否则它们才能正常工作。

最新更新