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

如何解决从android项目中删除所有未使用的资源

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

解决方法

        您可以轻松地从Android Studio中搜索未使用的资源。只需按CtrlAltShifti并键入\“未使用的资源\”(不带引号)。这将执行皮棉。运行lint命令(以及IDE中的其他内容)的超级简单方法。 要么 在Android Studio菜单中>重构>删除未使用的资源... 选择要删除的资源。您可以通过右键单击资源项来排除要保留的资源。 使用“执行重构”一次删除所有资源。 更新:为Mac使用⌘OptionShifti     ,        从ADT 16开始,您可以使用Android Lint。这真的是一个了不起的工具。   Android Lint是ADT 16(和工具16)的新工具,可扫描Android项目源中的潜在错误。      以下是一些其查找的错误类型的示例:         缺少翻译(和未使用的翻译)   布局性能问题(所有旧的layoutopt工具用来查找的问题,等等)   未使用的资源   数组大小不一致(在多个配置中定义了数组时)   可访问性和国际化问题(硬编码字符串,缺少contentDescription等)   图标问题(例如密度丢失,图标重复,尺寸错误等)   可用性问题(如未在文本字段中指定输入类型)   清单错误等。    但是,它存在一些问题(不知道它们是否已解决),并且是否要删除数百个所谓的未使用资源,建议您在删除资源期间多次手动编译项目,以确保Lint没有删除所需的内容。     ,        由于对Eclipse中ADT的支持已经结束,因此我们必须使用Android Studio。 在Android Studio 2.0+中,使用
Refactor > Remove Unused Resources...
    ,        适用于Android的Gradle构建系统支持“资源缩减”:在构建时会自动删除打包应用中未使用的资源。除了删除项目中在运行时实际不需要的资源之外,这还将从您所依赖的库中删除资源,如果您的应用程序实际上不需要这些资源。 要启用此功能,请在gradle文件中添加一行rinkleResources true。
   android {
        ...

        buildTypes {
            release {
                minifyEnabled true //Important step
                shrinkResources true
            }
   }
}
在此处查看官方文档, http://tools.android.com/tech-docs/new-build-system/resource-shrinking     ,        我们开放源代码的工具,可根据lint输出删除android项目中所有未使用的资源。 可以在这里找到:https://github.com/KeepSafe/android-resource-remover     ,        运行皮棉时,请注意是否使用多种口味。棉绒可能会提供错误的未使用资源,具体取决于您选择的口味。     ,        在Android Studio 2.0及更高版本中 在菜单中选择“重构”->单击“删除未使用的资源...”。 (要么) 快捷方式也可用 按Ctlr + Alt + Shift + i 将出现一个对话框,然后键入未使用的, 您会找到很多选择 选择并删除未使用的资源     ,        在Android Studio中, 分析->按名称运行检查 (对于Mac快捷键shift + command + option + i,在Windows / Linux上为Ctrl + Shift + A)。 并输入“未使用的资源”。 这样,您可以删除未使用的资源,变量,符号,本地化,库等。 从列表中选择所需的检查,然后选择检查范围->确定     ,        Android Wear开发人员注意:\“删除未使用的资源\”将删除您在其中声明功能名称(res / values / wear.xml)的xml文件,并且手机将无法连接到手表。我花了几个小时试图找出我的应用程序中的错误。     ,        要检查string.xml。 很简单(至少在我的Eclipse版本中) 在Eclipse for Android中(我的版本是v22.6.2-1085508) 在\“ Package Explorer \”中的项目名称上单击鼠标左键 选择\“ Android工具\”。 选择“运行Lint:检查常见错误”。 现在,当您打开strings.xml时,您将看到未使用的字符串突出显示。 您可以解决其他潜在问题。     ,也许有用 Andround未使用的资源是一个Java应用程序,它将扫描您的项目中是否有未使用的资源。未使用的资源不必要地占用空间,增加了构建时间,并且使IDE的自动完成列表变得混乱。 要使用它,请确保您的工作目录是Android项目的根目录,然后运行: java -jar AndroidUnusedResources.jar https://code.google.com/p/android-unused-resources/     ,        当我们定义收缩资源为真时,我们还可以定义我们要保留哪些资源,哪些不保留 我已经在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_ *,将删除可绘制文件夹中名称为Messenger的所有文件,否则我将定义要删除的特定文件 这样您就可以自行从库中删除文件 您还可以按@ layout / layout名称删除布局 如果该可绘制对象已被布局使用,等等。     ,        这里有非常好的答案,建议使用好的工具 但是,如果您打算删除png-drawables(或其他图像文件),则还应考虑将所有drawable-xxxx文件夹从项目中移出到临时文件夹中,然后进行全部重建,并查看构建情况消息列表,它将告诉您缺少哪些。 如果您想概述有效使用的资源,并可能用图标字体或svg资源替换它们,可能需要借助Android Iconics库,此功能特别有用。     ,        Android Assets Viewer旨在帮助视觉检查.apk中打包的图形(作为可绘制对象)(如果您愿意,也可以仅上传res文件夹的zip文件): http://www.cellebellum.net/AndroidAssetsViewer/ 因此,对于删除未使用的资源,这可能与Lint检查配合使用,可以帮助确保应该存在的所有内容。它还可以帮助您确定可绘制对象的其他一些潜在问题:错误的存储桶,错误的图形等。     ,        在Android Studio中运行Lint并找到所有未使用的资源后,可以从“检查”选项卡中单击其中之一。它提供了有关该问题的一些详细信息以及一些修复此问题的选项。其中之一是“删除所有未使用的资源”。选择该选项将删除所有未使用的资源。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?