我发现了一个未使用的字符串资源,例如:
my name is null!
但是,它以数十种文件,不同语言,在values,values-af,values-be等文件夹中的不同strings.xml文件中存在。
除了一个接一个地手动修改之外,我肯定错过了一些其他方法,不知道该如何在Android Studio中执行此操作。
tl; dr如何删除所有配置的未使用的字符串资源?
Menu -> Analyze -> Run Inspection by Name -> Unused resources
@Blackbelt是查找未使用资源的好方法,是否可以自动删除它们?
@Apurva perl是一个不错的选择
要识别所有未使用的资源:
打开菜单>分析>按名称运行检查...
选择"未使用的资源"
确保选中了整个项目,然后按
浏览列表。您始终可以使用"重新运行"按钮重新运行检查。
Android Studio(v 1.0)中没有真正简单的方法来删除所有语言环境的资源字符串。但是,您可以搜索并替换文件。幸运的是,在大多数情况下,翻译文件仅使用一行,因此效果很好。
在Android Studio中:
从源代码管理中没有待处理的更改开始(这样可以更轻松地检查和退回是否出错)。
打开菜单>编辑>查找>在路径中替换...
在要查找的文本中:.*name="obsoletestring".*
在替换为:(空)
检查正则表达式
按查找按钮。
检查结果。如果可以,请按"所有文件"按钮。
您可能必须手动删除res / values / strings.xml中的注释。
确保您的项目仍在构建。
在源代码管理中查看项目的差异,以确保更改确实是您想要的...
现在可以在Android Studio中使用。
Lint检查之后,您会在右侧的"删除所有未使用的资源"上看到一个选项!
要删除所有语言环境文件中的单个字符串资源,可以使用"翻译编辑器"。
1.右键单击res目录以打开翻译编辑器。
2.选择"显示所有键"选择器,然后选择"按文本过滤"。提供您要删除的资源的名称。
3.选择资源,然后单击"-"按钮
您如何运行它?
菜单"分析"和"检查代码"!
如何跨多个语言环境文件删除单个资源?
在出现IDE支持之前,将遵循以下原则:
find -name strings.xml|xargs -rd\
sed -ri '/"string_to_delete"/d'
很棒的答案! 如果还处理多行的字符串标记,那就更好了。
这似乎不起作用。 错误:xargs: illegal option -- r
在您的系统版本的xargs中,-r(别名为--no-run-if-empty)可能不可用。 也许尝试长格式。 根据变更日志,它似乎已经可用了约27年,并且在我的系统版本v4.7.0-git上可以看到它。
在Android Studio 2.3中,可以删除所有未使用的资源。
在res / values /目录中打开任何* .xml
右键单击任何项??目的名称
Refactor -> Remove Unused Resources...
小心这一点。 它甚至删除了仍在使用的资源。 :-(
菜单->分析->按名称运行检查->未使用的资源
从结果中选择所有未使用的字符串资源。
右键单击突出显示的行,然后选择"使用@SuppressLint(Java)或tools:ignore(XML)进行抑制"。这会将属性tools:ignore添加到所有字符串文件中的所有字符串。
菜单->查找->在路径中替换
查找文本:^。*?tools:ignore =" UnusedResources"。*? n
勾号正则表达式框
使用范围:自定义
打开自定义范围编辑器并添加模式:file [app]:src / main / res // strings.xml
找
等等。
不幸的是,您必须手动执行此操作。
检查此答案以了解您应该怎么做才能使用Eclipse摆脱它们
如果您使用的是Android Studio,请在整个应用程序中找到它们,然后手动删除它们。
请注意,REMOVE UNUSED RESOURCES命令不能将以编程方式访问的资源识别为已使用资源(例如getIdentifier(..)等)。
因此,如果您以这种方式访问??资源,则使用该命令的风险很大!!
实际上,Android Lint应该报告未使用的资源,但是您也可以尝试使用这个不错的插件。