setContentView 正在使用非 SDK 接口

新手上路,请多包涵

当我在带有 API 28 的模拟器中运行我的应用程序时,控制台会给我以下警告:

W/oaristachimene: 访问隐藏方法 Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection) W/oaristachimene: 访问隐藏方法 Landroid/view/ViewGroup; ->makeOptionalFitsSystemWindows()V(浅灰名单,反射)

我一直在调试它,我发现它来自调用: setContentView(R.layout.activity_main) ,所以还有另一种方法来设置活动的布局,或者这个方法是否会被更新以便它不会在具有 Android API 28 的设备上运行时抛出该警告?

原文由 Iván Gómez 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 393
2 个回答

对于问题中的警告, computeFitSystemWindowsmakeOptionalFitsSystemWindows 实际上是support库或androidx库通过反射使用的。您可以通过简单地在 AppCompatDelegateImpl 中搜索这两种方法来验证它。

希望这可以在以后修复。

更新 1

最近,当我在 Firebase 测试实验室测试应用程序时,这 2 个 API 和其他一些 API 被标记

此警告的一个可能根本原因是 Google 拥有的库 UI 工具包。此时无需采取任何操作。

要么

此警告的一个可能根本原因是 Google 拥有的库 Android WebView。此时无需采取任何操作。

原文由 Dewey Reed 发布,翻译遵循 CC BY-SA 4.0 许可协议

您传递给 setContentView() 的布局 ID 很有可能包含来自使用非 SDK 接口的第 3 方库的一些视图。此警告告诉您正在发生这种情况,但您所能做的就是

  • 等待第 3 方修复他们的库
  • 从您的布局中删除那些第三方视图

目前,这只是一个警告;实际上不会发生什么不好的事情。但在 未来 的 Android 版本中,这可能会 成为 一个真正的问题。系统只是给你时间弄清楚。

原文由 Ben P. 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题