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

Mic*_*Tin 6 reflection android android-p-developer-preview android-9.0-pie

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");
Run Code Online (Sandbox Code Playgroud)

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

Avi*_*nde 3

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

  • Google 持续阻止非 SDK 调用。但他们还为开发人员开放了论坛,可以报告有关这些问题。因此,为了回答你的问题,有人可能已经创建了一个与此相关的票证,谷歌可能会考虑回滚。合理?

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

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

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