如何为 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>
但是它存在于数十个文件中,不同语言,在values
、values-af
、values-be
等文件夹中的不同strings.xml
文件中。
除了手动修改之外,我一定错过了一些不知道在 android Studio 中执行此操作的方法。
tl;dr 如何删除所有配置中未使用的字符串资源?
【问题讨论】:
Menu -> Analyze -> Run Inspection by Name -> 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 -> Remove Unused Resources...
【讨论】:
小心这个。它甚至删除了仍在使用的资源。 :-(【参考方案8】:请注意,REMOVE UNUSED RESOURCES 命令无法将通过编程访问的资源识别为已用资源(例如 getIdentifier(..) 等)。 因此,如果您确实以这种方式访问资源,那么使用该命令是非常危险的!
【讨论】:
以上是关于如何为 Android Studio 中的所有配置删除未使用的字符串资源?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Flutter 应用程序开发设置 Android Studio? [关闭]
如何为 Android Studio 3.0 禁用 Instant Run