我想从我的Android res目录中删除所有未使用的布局,字符串,可绘制对象,颜色等。是否有任何工具可以给我列出文件,并且可以从存储库中删除不再使用的特定文件(例如,未使用的字符串条目)中的元素?
我想从我的Android res目录中删除所有未使用的布局,字符串,可绘制对象,颜色等。是否有任何工具可以给我列出文件,并且可以从存储库中删除不再使用的特定文件(例如,未使用的字符串条目)中的元素?
Answers:
您可以轻松地从Android Studio搜索未使用的资源。只需按CtrlAltShifti并键入“ 未使用的资源 ”(不带引号)。这将执行皮棉。运行lint命令(以及IDE中的其他内容)的超级简单方法。
要么
在Android Studio菜单中 > 重构 > 删除未使用的资源...
选择要删除的资源。您可以通过右键单击资源项来排除要保留的资源。
使用“ 执行重构”一次删除所有资源。
更新:使用⌘OptionShifti的Mac
从ADT 16开始,您可以使用Android Lint。这真的是一个了不起的工具。
Android Lint是ADT 16(和工具16)的新工具,可扫描Android项目源中的潜在错误。
以下是一些其查找的错误类型的示例:
- 缺少翻译(和未使用的翻译)
- 布局性能问题(所有旧的layoutopt工具用来查找的问题,等等)
- 未使用的资源
- 数组大小不一致(在多个配置中定义了数组时)
- 可访问性和国际化问题(硬编码字符串,缺少contentDescription等)
- 图标问题(例如密度丢失,图标重复,尺寸错误等)
- 可用性问题(例如未在文本字段中指定输入类型)
- 清单错误等。
但是,它存在一些问题(不知道它们是否已解决),并且如果您要删除数百个所谓的未使用资源,建议您在删除资源期间多次手动编译项目,以确保Lint不会删除所需的东西。
Analyze > Inspect Code...
用来查找许多东西,包括未使用的声明和方法。
lint --check UnusedResources <project-path>
Extra Translations
在一起/自动?
由于对Eclipse中ADT的支持已经结束,因此我们必须使用Android Studio。
在Android Studio 2.0+中使用 Refactor > Remove Unused Resources...
适用于Android的Gradle构建系统支持“资源缩减”:在构建时,会自动删除打包应用中未使用的资源。除了删除项目中在运行时实际不需要的资源之外,这还将从您所依赖的库中删除资源,如果您的应用程序实际上不需要这些资源。
要启用此功能,请在gradle文件中添加true属性。
android {
...
buildTypes {
release {
minifyEnabled true //Important step
shrinkResources true
}
}
}
在此处查看官方文档,
http://tools.android.com/tech-docs/new-build-system/resource-shrinking
minifyEnabled true
我们开放源代码的工具,可根据lint输出删除android项目中所有未使用的资源。可以在这里找到:https : //github.com/KeepSafe/android-resource-remover
运行皮棉时,请注意是否使用多种口味。棉绒可能会根据您选择的口味提供错误的未使用资源。
要检查string.xml。
这很容易(至少在我的Eclipse版本中)
在Eclipse for Android中(我的版本是v22.6.2-1085508)
现在,当您打开strings.xml时,您将看到未使用的字符串突出显示。
您可以解决其他潜在问题。
可能有用的Andround未使用资源是一个Java应用程序,它将扫描您的项目中是否有未使用的资源。未使用的资源不必要地占用空间,增加了构建时间,并且使IDE的自动完成列表变得混乱。
要使用它,请确保您的工作目录是Android项目的根目录,然后运行:
java -jar AndroidUnusedResources.jar
当我们定义收缩资源为true时,我们还可以定义要保留的资源,不定义的资源,我在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检查一起使用,以帮助确保应有的所有内容。它还可以帮助您确定可绘制对象的其他一些潜在问题:错误的存储桶,错误的图形等。