【问题标题】:How to delete an unused string resource for all configurations in Android Studio?如何为 Android Studio 中的所有配置删除未使用的字符串资源?
【发布时间】:2015-05-10 08:19:34
【问题描述】:

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

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

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

除了手动修改之外,我一定错过了一些不知道在 Android Studio 中执行此操作的方法。

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

【问题讨论】:

  • Menu -&gt; Analyze -&gt; Run Inspection by Name -&gt; Unused resources
  • @Blackbelt 是查找未使用资源的好方法,有没有办法自动删除它们?
  • @Apurva perl 是一个不错的选择

标签: android android-studio android-resources


【解决方案1】:

其实Android Lint应该会报告未使用的资源,不过你也可以试试thisnice插件。

【讨论】:

    【解决方案2】:

    很遗憾,您必须手动操作。

    查看此answer 以了解您应该如何使用Eclipse 摆脱它们

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

    【讨论】:

      【解决方案3】:

      识别所有未使用的资源:

      • 打开菜单 > 分析 > 按名称运行检查...
      • 选择“未使用的资源”
      • 确保选中整个项目,然后按确定。
      • 查看列表。您可以随时使用重新运行按钮重新运行检查。

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

      在 Android Studio 中:

      • 从源代码管理中没有待处理的更改开始(如果出现问题,可以更轻松地检查和退出)。
      • 打开菜单 > 编辑 > 查找 > 在路径中替换...
      • 在文本中查找:.*name="obsoletestring".*\n
      • 替换为:(空)
      • 检查正则表达式
      • 按查找按钮。
      • 检查结果。如果没问题,请按“所有文件”按钮。
      • 您可能必须手动删除 res/values/strings.xml 中的注释。
      • 确保您的项目仍在构建中。
      • 查看源代码管理中项目的差异,以确保更改确实符合您的预期...

      【讨论】:

        【解决方案4】:

        在 IDE 支持出现之前,这些方面的东西会起作用:

        find -name strings.xml|xargs -rd\\n  sed -ri '/"string_to_delete"/d'
        

        【讨论】:

        • 很棒的答案!如果多行字符串标签也能处理就更好了。
        • 这似乎不起作用。错误:xargs: illegal option -- r
        • -r(别名为--no-run-if-empty)可能在您系统的 xargs 版本上不可用。也许尝试长形式。根据changelog 的说法,它似乎已经存在了大约 27 年,我在我的系统版本 v4.7.0-git 上看到了它。
        【解决方案5】:
        1. 菜单 -> 分析 -> 按名称运行检查 -> 未使用的资源
        2. 从结果中选择所有未使用的字符串资源。

          • 右键单击突出显示的行并选择“使用@SuppressLint(Java) 或工具进行抑制:ignore(XML)”。这会将属性 tools:ignore 添加到所有字符串文件中的所有字符串。
        3. 菜单 -> 查找 -> 在路径中替换

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

        【讨论】:

          【解决方案6】:

          现在可以在内部 Android Studio。 在 Lint 检查后,您会在右侧看到一个选项删除所有未使用的资源

          要删除所有语言环境文件中的单个字符串资源,您可以使用“翻译编辑器”。 1、右键res目录,打开翻译编辑器。 2. 选择“显示所有键”选择器,然后选择“按文本过滤”。提供要删除的资源的名称。 3. 选择资源,点击“-”按钮

          【讨论】:

          • 你是如何运行它的?
          • 菜单“分析”和“检查代码”!
          • 如何删除跨多个语言环境文件的单个资源?
          【解决方案7】:

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

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

          【讨论】:

          • 小心这个。它甚至删除了仍在使用的资源。 :-(
          【解决方案8】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-09-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-11
            • 2014-07-18
            • 2012-06-16
            相关资源
            最近更新 更多