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

Remove unused resources from Android app on compile time

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

中引用的任何图像

现在我可以做到这一点,它将任何未使用的图像 sh运行k 变成 1x1 黑点:

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

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

编辑:为了澄清起见,我需要移除或重命名 Proguard 呈现的 "unused" 资源。

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

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

您也可以在发布模式下启用混淆器

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

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

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

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

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

希望这对您有所帮助。

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

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

[我们在 GuardSquare 开发 ProGuard 和 DexGuard]