在编译时从Android应用程序中删除未使用的资源

时间:2016-08-08 12:32:49

标签: java android image resources proguard

我目前正在尝试在编译时从应用中删除未使用的图形资源。我知道Android Studio可以帮我手动删除未使用的,但我需要能够在编译时删除它们;这样,我可以运行Proguard来删除未使用的类,然后删除从这些类引用的任何图像。

现在我可以做到这一点,它让任何未使用的图像缩小为1x1黑点:

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

我不能在那里有那些文件(甚至缩小)。 有没有办法让Proguard实际删除这些图像(而不是缩小它们)或重命名它们? 也许我可以使用其他一些工具?

编辑:为了澄清,我需要提供的资源"未使用"由Proguard删除或重命名。

3 个答案:

答案 0 :(得分:0)

要删除未使用的资源,您可以使用ADT 16中的Android Lint工具。它不仅可以帮助您删除未使用的资源,还可以帮助您查找潜在的错误。

http://tools.android.com/tips/lint

您还可以在发布模式下启用proguard

ProGuard工具通过删除未使用的代码并使用语义模糊的名称重命名类,字段和方法来缩小,优化和混淆代码。结果是一个较小的.apk文件,更难以进行逆向工程。

http://developer.android.com/tools/help/proguard.html

您可以轻松地从Android Studio搜索未使用的资源。只需按Control + Alt + Shift + i并输入"未使用的资源" (没有引号)。这将执行lint。如何运行lint命令(以及来自IDE的其他东西)的超级简单方法。

答案 1 :(得分:0)

如果您正在寻找一些实用工具,可以使用https://code.google.com/archive/p/android-unused-resources/

https://github.com/KeepSafe/android-resource-remover

希望这会有所帮助。

答案 2 :(得分:0)

ProGuard(或新的Jack编译器)仅缩小和混淆字节码。资源收缩工具随后会删除或替换未使用的资源文件。

ProGuard的商业扩展DexGuard缩小,优化和混淆字节码,Android清单,资源,资源文件,资产文件和本机库。据我所知,它是唯一同时分析和优化所有内容的工具。例如,它确实删除了未使用的类和相应的未使用的资源和资源文件。

[我们在GuardSquare开发ProGuard和DexGuard]