为什么删除id?

Why the ids are removed?

在我的 Android 项目中,我使用视图绑定:

buildFeatures {
     dataBinding = true
     viewBinding = true
}

理想情况下我只会使用 dataBinding,但在这种情况下我总是需要使用标签

<layout ...> </layout>

在 XML 布局中使用它。这就是为什么我只在我真正需要在 XML 内绑定数据的地方使用它。在其他情况下,我使用 viewBinding 因为插件 'kotlin-android-extensions' 已被弃用。一切正常,但是当我运行Analyze -> Inspect code时出现如下问题。一旦完成并找到一些未使用的资源(在 Android -> Lint -> Perfomance -> Unused resources 下)并且我删除了所有这些资源,因为我不需要它们,它还会删除分配给 XML 中所有视图的 ID。但是,XML 中带有标签 <layout ...> </layout> 的 ID 不会被删除。仅在使用 viewBinding.

时删除 ID

我不是专家,但我认为,删除未使用的资源与 View 的 ID 没有任何关系,这不应该发生。

每次优化后(意味着从未使用的资源中清理项目)我总是必须分配 ID,这是非常低效的,尤其是当项目变大并且有更多 View 具有 ID 时。

为什么会发生这种情况,我该如何预防?

发生这种情况的原因可能是 lint 不知道您将在视图绑定中使用这些 ID...这是它应该知道的错误。你可以做的是,当你 运行 查找未使用资源的 lint 时,有一个选项你可以取消选中,该选项不会删除未使用的 ID。

.