从android项目中删除所有未使用的资源

我想从我的Android res目录中删除所有未使用的布局,string,drawables,颜色等。 有什么工具可以给我一个文件列表,我可以从我的存储库中删除和不再使用的特定文件(如未使用的string条目)中的元素?

您可以轻松地从Android Studio中search未使用的资源。 只要按Ctrl + Alt + Shift + 键入“ 未使用的资源 ”(不含引号)。 这将执行lint。 超级简单的方法如何运行lint命令(和其他东西从IDE)。

要么

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

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

使用重构一次删除所有资源。

更新:为mac使用cmd + Alt + Shift

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

Android Lint是ADT 16(和Tools 16)的一个新工具,它可以扫描Android项目源以查找潜在的错误。

以下是它寻找的错误types的一些例子:

  • 缺less翻译(和未使用的翻译)
  • 布局性能问题(旧的layoutopt工具用来查找的所有问题,以及更多)
  • 未使用的资源
  • 不一致的数组大小(当在多个configuration中定义数组时)
  • 可访问性和国际化问题(硬编码string,缺less内容描述等)
  • 图标问题(如缺less密度,重复图标,大小错误等)
  • 可用性问题(如在文本字段中未指定inputtypes)
  • 清单错误等等。

然而,它有一些问题(不知道他们是否已经修复),如果你想删除数百个被认为是未使用的资源,我build议在资源删除过程中多次手动编译项目,以确保Lint没有删除需要的东西。

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

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

在这里输入图像描述

Android的Gradle构build系统支持“资源缩小”:在打包的应用程序中自动删除未使用的资源。 除了删除项目中运行时实际不需要的资源外,还会从库中删除资源,这取决于应用程序是否确实需要这些资源。

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

  android { ... buildTypes { release { shrinkResources true } } } 

在这里查看官方文档,

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

我们开源的工具,基于lint输出,删除您的Android项目中的所有未使用的资源。 它可以在这里find: https : //github.com/KeepSafe/android-resource-remover

小心运行lint时是否使用了多种口味。 Lint可能会根据您select的风味提供虚假的未使用的资源。

检查string.xml。

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

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

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

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

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

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

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

java -jar AndroidUnusedResources.jar

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

在Android Studio 2.0及以上版本的菜单中,selectRefactor – >点击Remove Unused Resources …

(要么)

快捷方式也可用

Ctlr + Alt + Shift +我会popup一个对话框,然后inputunused ,你会发现有多个选项可供select并删除未使用的资源

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

Android资源查看器旨在帮助您可视化地检查您的.apk文件(如drawables)(如果您愿意,也可以上传res文件夹的zip文件):

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

因此,为了消除未使用的资源,这可能与Lint检查一起工作良好,以帮助确保应该在那里的一切。 它还可以帮助您识别可绘制的其他几个潜在问题:错误的桶,错误的graphics等

在Android Studio中运行Lint并查找所有未使用的资源之后,可以从“检查”选项卡中单击其中一个。 它提供了一些关于这个问题的细节和几个解决方法。 其中之一是删除所有未使用的资源。 select该选项将删除所有未使用的资源。

这里有非常好的答案,build议好的工具

但是,如果您打算删除png-drawables(或其他图像文件 ),则还应该考虑将所有drawable-xxxx文件夹移出项目到临时文件夹,然后重build所有内容,并查看构build消息列表将告诉你哪些是丢失。

如果您想了解您正在有效使用哪些资源,并可能使用Android Iconics库的帮助来replace图标字体或svg资源,这可能特别有用。

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

之前进一步生成一个单一的签署build设和检查apk分析工具,这将显示drawable-xhdpi-v4 messenger_button_send_round_shadow.png我想要删除此testing

 <?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_ *所有文件从名称messenger开始在可绘制的文件夹将被删除或其他方式是我已经定义特定的文件被删除

这样,你可以自己从库中删除文件,你也可以通过@ layout / layout name来移除布局,如果这个drawable已经被layout使用,那么….

例如,未使用的资源lint检查不适用于Kotlin代码。 你应该按下(右键)在您的水库(绘制,布局等)的每个文件,并select“ Find Usages ”。

PS稍后当android lint将从AST移动到UAST时(同时支持KotlinJava ), 请稍后解决 – https://groups.google.com/forum/#!topic/lint-dev/7nLiXa04baM