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

时间:2011-06-16 14:23:43

标签: android android-resources

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

16 个答案:

答案 0 :(得分:601)

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

OR

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

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

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

更新:使用 Alt Shift i for mac

答案 1 :(得分:95)

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

  

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

     

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

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

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

答案 2 :(得分:36)

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

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

enter image description here

答案 3 :(得分:32)

Android的Gradle构建系统支持"资源缩减":在打包的应用程序中,在构建时自动删除未使用的资源。除了删除项目中在运行时实际不需要的资源之外,如果应用程序实际上不需要它们,这也会从库中删除资源。

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

   android {
        ...

        buildTypes {
            release {
                shrinkResources true
            }
   }
}

查看官方文档,

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

答案 4 :(得分:16)

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

答案 5 :(得分:12)

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

答案 6 :(得分:7)

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

(或)

快捷方式也可用

Ctlr + Alt + Shift + i 将显示一个对话框,然后键入未使用, 你会发现很多选择 选择并删除未使用的资源

答案 7 :(得分:5)

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

答案 8 :(得分:4)

检查string.xml。

这很简单(至少在我的Eclipse版本中)

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

  • 在" Package explorer"
  • 中左键单击项目名称
  • 选择" Android工具"。
  • 选择"运行Lint:检查常见错误"。

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

您可以解决其他潜在问题。

答案 9 :(得分:3)

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

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

java -jar AndroidUnusedResources.jar

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

答案 10 :(得分:3)

在Android Studio中,

分析->按名称运行检查

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

然后输入“未使用的资源”。

这样,您可以删除未使用的资源,变量,符号,本地化,库等。

从列表中选择所需的检查,然后选择检查范围->确定 enter image description here

答案 11 :(得分:2)

当我们定义收缩资源时,我们还可以定义我们想要保留哪些资源以及哪些资源不存在 我在res / raw文件夹中添加了名为keep.xml的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文件夹中的name messenger开始的所有文件,或者其他方式是我已定义要删除的特定文件

这样你可以自己从库中删除文件 您还可以通过@ layout / layout name删除布局 如果那个drawable已经被布局使用了......

答案 12 :(得分:2)

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

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

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

答案 13 :(得分:1)

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

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

如果您希望了解有效使用哪些资源并使用图标字体或svg资源替换它们,可能需要Android Iconics库的帮助,这可能非常有用。

答案 14 :(得分:0)

Android资产查看器旨在帮助您直观地检查.apk中的图形(作为drawable)(如果您愿意,还可以上传res文件夹的zip文件):

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

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

答案 15 :(得分:0)

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