有什么简单的方法来找出Android项目中的未使用的string?

我有一个很大的Android项目,在strings.xml声明了很多string。 我想在strings.xml删除未使用的strings.xml

有没有简单的方法来做到这一点?

Android Studio上

菜单 – > 分析 – > 按名称运行检查 – > 未使用的资源

检查文件掩码checkbox,并将strings.xml放在文本字段中。

使用ADT 16,您可以尽可能简单地完成。 更新到ADT 16并使用Android Lint 。 这真是了不起的工具。 它可以find所有未使用的资源(不仅是string)等等。 从其官方网站:

 Here are some examples of the types of errors that it looks for: - Missing translations (and unused translations) - Layout performance problems (all the issues the old layoutopt tool used to find, and more) - Unused resources - Inconsistent array sizes (when arrays are defined in multiple configurations) - Accessibility and internationalization problems (hardcoded strings, missing contentDescription, etc) - Icon problems (like missing densities, duplicate icons, wrong sizes, etc) - Usability problems (like not specifying an input type on a text field) - Manifest errors and many more. 

在我的情况下,“按名称运行检查”不起作用,尽pipe我正在使用“删除未使用的资源”。

解:

  1. 打开strings.xml
  2. 辅助点击
  3. 重构 – >删除未使用的资源

我不知道为什么“删除未使用的资源”是一种方式,而不是其他方式。

看看我的问题: 找出是否使用资源

由于没有人有真正的答案,我编写了一个脚本来search包含string的未使用的资源。

希望能帮助你。

这是另一个相当简单的解决scheme。 在Android Studio菜单中转到

重构>删除未使用的资源…。

在这里输入图像说明

单击“ 预览”查看未使用的资源,然后select性地删除它们。

请参阅http://code.google.com/p/android-unused-resources/链接。; 它有一个工具AndroidUnusedResources.jar。 运行这个并得到你的未使用的string或任何资源被删除。

  • 深渊

检查string.xml。

这很容易(至less在我的Eclipse版本中)

在Eclipse的Android(我有版本v22.6.2-1085508)

  • 右键单击“包资源pipe理器”中的项目名称
  • select“Android工具”。
  • select“运行Lint:检查常见错误”。

现在当你打开strings.xml时,你会看到未使用的string被突出显示。

您可以修复其他潜在的问题。

在Android Studio新闻

CTLR + Alt + Shift + I键

select – >未使用的资源
它显示您未使用的未使用的string和图标。

谢谢快乐编码:)

仅对于缺less的翻译:

使用InteliJ,单击InteliJ的面板栏:“分析”>“按名称运行检查”>键入:不完整的翻译

从项目的根目录运行此脚本。

对于`find res / values / *。xml`中的resourcefile; 做
  在`grep'中为stringname。* / \ 1 / g'`; 做
     count1 =`grep -rc“R.string。$ {stringname}”src |  egrep -v':0 $'|  wc -l`
     count2 =`grep -rc“@string / $ {stringname}”res / layout |  egrep -v':0 $'|  wc -l`
     count3 =`grep -rc“@string / $ {stringname}”res / menu |  egrep -v':0 $'|  wc -l`
     count4 =`grep -rc“@string / $ {stringname}”AndroidManifest.xml |  egrep -v'^ 0 $'|  wc -l`
     count5 =`grep -rc“@string / $ {stringname}”res / xml |  egrep -v':0 $'|  wc -l`
    如果[$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; 然后
       echo $ resourcefile:$ stringname
    科幻
   DONE
 DONE

对于`find res / drawable * -type f -name'*中的资源名称。 做
   resource =`echo $ resourcename |  xargs basename |  sed“s / ^ \(。* \)\ .... $ / \ 1 / g”`
   count1 =`grep -rc“R \ .drawable \。$ {resource}”src |  egrep -v':0 $'|  wc -l`
   count2 =`grep -rc“@drawable / $ {resource}”res / layout |  egrep -v':0 $'|  wc -l`
   count3 =`grep -rc“@drawable / $ {resource}”res / drawable * / *。xml |  egrep -v':0 $'|  wc -l`
   count4 =`grep -rc“@drawable / $ {resource}”res / menu |  egrep -v':0 $'|  wc -l`
   count5 =`grep -rc“@drawable / $ {resource}”AndroidManifest.xml |  egrep -v'^ 0 $'|  wc -l`
  如果[$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; 然后
       echo $ resourcename
  科幻
 DONE

为`find res / layout / *。xml`中的资源名称; 做
   resource =`echo $ resourcename |  xargs basename |  sed“s / ^ \(。* \)\ .... $ / \ 1 / g”`
   count1 =`grep -rc“R \ .layout \。$ {resource}”src |  egrep -v':0 $'|  wc -l`
  如果[$ count1 -eq 0]; 然后
       echo $ resourcename
  科幻
 DONE

它给了我这种输出:

 res / values / activity_strings.xml:activity_more
 res / values / activity_strings.xml:activity_as_reply_to
 res / values / db_strings.xml:sql_backlog_count
 res / values / db_strings.xml:sql_backlog_update_last_resend
 ...