8

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 中可用,深灰名单黑名单有什么区别?

4

1 回答 1

3

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

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

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

  • 黑名单是无论您的应用程序要针对哪个 API 级别都不会工作的调用。

  • 深灰名单是当且仅当您的应用程序以 API 级别 28 为目标时才会起作用的调用,否则它们将正常工作。

于 2018-07-23T07:50:55.977 回答