449

我想从我的 Android res 目录中删除所有未使用的布局、字符串、可绘制对象、颜色等。是否有任何工具可以为我提供文件列表,并且我可以从我的存储库中删除不再使用的特定文件(例如未使用的字符串条目)中的元素?

4

16 回答 16

879

您可以轻松地从 Android Studio 中搜索未使用的资源。只需按下CtrlAltShifti并输入“未使用的资源”(不带引号)。这将执行 lint。运行 lint 命令(以及 IDE 中的其他内容)的超级简单方法。

或者

Android Studio 菜单>重构>删除未使用的资源...

选择要删除的资源。您可以通过右键单击资源项来排除要保留的资源。

使用Do Refactor一次删除所有资源。

更新:使用⌘</kbd>OptionShifti for mac

于 2015-07-28T06:58:41.807 回答
99

从 ADT 16 开始,您可以使用Android Lint。这真是一个了不起的工具。

Android Lint 是 ADT 16(和 Tools 16)的新工具,可扫描 Android 项目源代码中的潜在错误。

以下是它查找的错误类型的一些示例:

  • 缺少翻译(和未使用的翻译)
  • 布局性能问题(旧的 layoutopt 工具用来查找的所有问题,等等)
  • 未使用的资源
  • 数组大小不一致(当数组在多个配置中定义时)
  • 可访问性和国际化问题(硬编码字符串、缺少 contentDescription 等)
  • 图标问题(如缺少密度、重复图标、错误尺寸等)
  • 可用性问题(例如未在文本字段上指定输入类型)
  • 显示错误等等。

但是,它有一些问题(不知道它们是否已经修复),如果你想删除数百个据称未使用的资源,我建议在资源删除期间手动编译项目几次,以确保 Lint 没有删除需要的东西。

于 2011-12-14T16:59:49.960 回答
44

由于 Eclipse 中对 ADT 的支持已经结束,我们必须使用 Android Studio。

在 Android Studio 2.0+ 中使用Refactor > Remove Unused Resources...

在此处输入图像描述

于 2016-04-28T20:39:44.020 回答
41

适用于 Android 的 Gradle 构建系统支持“资源缩减”:在构建时自动删除打包应用程序中未使用的资源。除了删除项目中在运行时实际上不需要的资源之外,这还会从您所依赖的库中删除资源,如果您的应用程序实际上不需要这些资源。

要启用此功能,请在您的 gradle 文件中添加行 shrinkResources true。

   android {
        ...

        buildTypes {
            release {
                minifyEnabled true //Important step
                shrinkResources true
            }
   }
}

在这里查看官方文档,

http://tools.android.com/tech-docs/new-build-system/resource-shrinking

于 2015-07-28T07:16:23.807 回答
17

我们开源了一个工具,它可以根据 lint 输出删除您的 android 项目中所有未使用的资源。可以在这里找到:https ://github.com/KeepSafe/android-resource-remover

于 2014-04-22T22:35:23.850 回答
17

请注意,如果您在运行 lint 时使用了多种口味。根据您选择的风格,Lint 可能会提供错误的未使用资源。

于 2016-04-14T08:19:26.627 回答
10

在 Android Studio 中,

分析 -> 按名称运行检查

(Mac shift+command+option+i 的快捷键,Windows/Linux 上的 Ctrl + Shift + A)。

并输入“未使用的资源”。

通过这种方式,您可以删除未使用的资源、变量、符号、本地化、库等。

从列表中选择所需的检查,然后选择检查范围 -> 确定 在此处输入图像描述

于 2018-09-03T10:51:23.737 回答
9

在 Android Studio 2.0 及更高版本的菜单中选择 Refactor-->点击 Remove Unused Resources...

(或者)

快捷方式也可用

Ctlr+Alt+Shift+i 会出现一个对话框,然后输入unused,您会发现选项数量选择和删除未使用的资源

于 2016-06-28T05:54:39.640 回答
6

Android Wear 开发者注意:“删除未使用的资源”将删除您声明功能名称的 xml 文件(res/values/wear.xml),手机将无法连接到手表。我花了几个小时试图找出我的应用程序中的这个错误。

于 2017-08-10T13:31:52.660 回答
4

检查 string.xml。

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

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

  • 左键单击“包资源管理器”中的项目名称
  • 选择“安卓工具”。
  • 选择“运行 Lint:检查常见错误”。

现在,当您打开 strings.xml 时,您会看到未使用的字符串被突出显示。

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

于 2014-04-14T15:17:26.430 回答
3

也许有用 Andround Unused Resources 是一个 Java 应用程序,它将扫描您的项目以查找未使用的资源。未使用的资源不必要地占用空间,增加构建时间,并使 IDE 的自动完成列表变得混乱。

要使用它,请确保您的工作目录是 Android 项目的根目录,然后运行:

java -jar AndroidUnusedResources.jar

https://code.google.com/p/android-unused-resources/

于 2014-03-03T08:33:52.923 回答
3

当我们定义收缩资源时,我们还可以定义我们想要保留哪些资源,哪些不是我已经在名为 keep.xml 的 res/raw 文件夹中添加了 xml 文件

在进一步生成单个签名构建并签入 apk 分析器工具之前,该工具将显示 drawable-xhdpi-v4 有 messenger_button_send_round_shadow.png 我想为此测试删除它

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
       tools:shrinkMode="strict"
       tools:discard="@drawable/com_facebook_button_icon_blue.png,
       @drawable/com_facebook_button_icon_white.png,
       @drawable/com_facebook_button_like_icon_selected.png,
       @drawable/messenger_button_send_round_shadow.png,
       @drawable/messenger_*"  />

通过执行 messenger_*,所有从 drawable 文件夹中的名称 messenger 开始的文件都将被删除,或者其他方式是我已经定义了要删除的特定文件

这样您就可以自己从库中删除文件,如果该drawable已被布局使用,您还可以通过@layout/layout名称删除布局等等....

于 2017-02-26T09:19:59.487 回答
1

这里确实有很好的答案,建议使用好的工具

但是,如果您打算删除 png-drawables(或其他图像文件),您还应该考虑将所有 drawable-xxxx 文件夹从您的项目中移出到一个临时文件夹中,然后全部重新构建,并查看构建消息列表,它将告诉您缺少哪些消息。

如果您想大致了解您正在有效使用的资源,并可能在Android Iconics库的帮助下将它们替换为图标字体或 svg 资源,这将特别有用。

于 2016-12-12T08:36:38.207 回答
1

shift双击Windows然后输入“未使用”,你会发现一个选项Remove unused Resources

 android {
        buildTypes {
            release {
                minifyEnabled true
                shrinkResources true
            }
   }
}

当您设置这些设置时,AS 将自动删除未使用的资源。

于 2021-02-24T08:16:23.200 回答
0

Android Assets Viewer 旨在帮助直观地检查 .apk 中打包的图形(作为可绘制对象)(如果您愿意,也可以只上传 res 文件夹的 zip 文件):

http://www.cellebellum.net/AndroidAssetsViewer/

因此,对于删除未使用的资源,这可能与 Lint 检查配合使用,以帮助确保应该存在的所有内容。它还可以帮助您识别可绘制对象的其他一些潜在问题:错误的存储桶、错误的图形等。

于 2013-10-19T10:50:23.667 回答
0

在 Android Studio 中运行 Lint 并找到所有未使用的资源后,您可以从“检查”选项卡中单击其中一个。它提供了有关该问题的一些详细信息以及一些解决该问题的选项。其中之一是删除所有未使用的资源。选择该选项会删除所有未使用的资源。

于 2016-05-23T20:29:55.320 回答