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

Posted

技术标签:

【中文标题】如何为 Android Studio 中的所有配置删除未使用的字符串资源?【英文标题】:How to delete an unused string resource for all configurations in 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 是一个不错的选择 【参考方案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】:
    菜单 -> 分析 -> 按名称运行检查 -> 未使用的资源

    从结果中选择所有未使用的字符串资源。

    右键单击突出显示的行并选择“使用@SuppressLint(Java) 或工具进行抑制:ignore(XML)”。这会将属性 tools:ignore 添加到所有字符串文件中的所有字符串。

    菜单 -> 查找 -> 在路径中替换

    要查找的文本:^.*?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(..) 等)。 因此,如果您确实以这种方式访问​​资源,那么使用该命令是非常危险的!

【讨论】:

以上是关于如何为 Android Studio 中的所有配置删除未使用的字符串资源?的主要内容,如果未能解决你的问题,请参考以下文章

如何为Android Studio编写插件?

如何为 Android Studio 编写插件?

如何为 Flutter 应用程序开发设置 Android Studio? [关闭]

如何为 Android Studio 3.0 禁用 Instant Run

如何为不同的屏幕尺寸android studio自动调整imageview的大小?

如何为“Visual Studio emulator for android”的模拟器安装证书?