如何删除 Android Studio 中所有配置未使用的字符串资源?

How to delete an unused string resource for all configurations in Android Studio?

我发现了一个未使用的字符串资源,例如:

<string name="obsoletestring">my name is null!</string>

然而,它存在于数十个不同语言的文件中,在 valuesvalues-afvalues-be 等文件夹中的不同 strings.xml 个文件中。

我一定是漏掉了一些东西,我不知道在 Android Studio 中除了手动逐一修改之外还有什么方法可以做到这一点。

tl;dr 如何为所有配置删除未使用的字符串资源?

事实上,Android Lint 应该会报告未使用的资源,但您也可以尝试使用 this 不错的插件。

不幸的是,您必须手动完成。

检查此 answer 以了解您应该如何使用 Eclipse

摆脱它们

如果您正在使用 Android Studio 在整个应用程序中找到它们并手动删除.. 检查此 answer

确定所有未使用的资源:

  • 打开菜单 > 分析 > 运行 按名称检查...
  • Select "Unused Resources"
  • 确保选中整个项目,然后按确定。
  • 浏览列表。您始终可以使用重新运行按钮重新运行检查。

在 Android Studio (v 1.0) 中没有真正简单的方法来删除所有语言环境的资源字符串。但是,您可以在文件中搜索和替换。幸运的是,翻译文件在大多数情况下只使用一行,所以效果很好。

在 Android 工作室中:

  • 从您的源代码控制中没有待处理的更改开始(如果出现问题,更容易检查和退出)。
  • 打开菜单 > 编辑 > 查找 > 在路径中替换...
  • 在文本中查找:.*name="obsoletestring".*\n
  • 替换为:(空)
  • 检查正则表达式
  • 按“查找”按钮。
  • 检查结果。如果没问题,请按 "All files" 按钮。
  • 您可能需要手动删除 res/values/strings.xml 中的评论。
  • 确保您的项目仍在构建。
  • 查看您的项目在源代码管理中的差异,以确保更改确实您想要的...

在 IDE 支持出现之前,以下内容将起作用:

find -name strings.xml|xargs -rd\n  sed -ri '/"string_to_delete"/d'
  1. 菜单 -> 分析 -> 运行 按名称检查 -> 未使用的资源
  2. 从结果中 select 所有未使用的字符串资源。

    • 右键单击突出显示的行并选择 "Suppress with @SuppressLint(Java) or tools:ignore(XML)"。这会将属性 tools:ignore 添加到所有字符串文件中的所有字符串。
  3. 菜单 -> 查找 -> 在路径中替换

    • 要查找的文本:^.*?tools:ignore="UnusedResources".*?\n
    • 勾选正则表达式框
    • 使用范围:自定义
      • 打开自定义范围编辑器并添加模式:file[app]:src/main/res//strings.xml
    • 查找
    • 等等

现在可以 Android Studio 中。 在 Lint 检查之后,您会在右侧看到一个选项 Remove All Unused Resources!

要删除所有语言环境文件中的单个字符串资源,您可以使用 "Translation Editor"。 1.右键点击res目录打开翻译编辑器。 2. Select "Show All Keys"选择器,选择"Filter by Text"。提供要删除的资源的名称。 3.Select资源,点击“-”按钮

在 Android Studio 2.3 中,可以删除所有未使用的资源。

  • 打开 res/values/ 目录中的任何 *.xml
  • 右键单击任何项​​目的名称
  • Refactor -> Remove Unused Resources...

请注意,REMOVE UNUSED RESOURCES 命令无法将以编程方式访问的资源识别为已用资源(例如 getIdentifier(..) 等)。 因此,如果您确实以这种方式访问​​资源,那么使用该命令的风险很高!!