背景

根据 Andriod 文档的“Resource Shrinking”网页( here ),您可以通过 build.gradle 文件最小化应用程序的大小,使用以下几行:

android {
    ...

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

而且,他们说在使用它时,它还会告诉你在这个过程中节省了多少:



问题

我找不到这些问题的答案:
  • 使用Android-Studio本身创建签名应用程序时,在哪里可以找到保存了多少以及删除/修改了哪些文件的信息?
  • “shrinkResources”究竟做了什么而“minifyEnabled”没有?为什么“shrinkResources”依赖于“minifyEnabled”?
  • 这些选项中的任何一个会影响图像文件的大小和/或质量吗?
  • Proguard 不负责压缩源代码吗?我问这个是因为它说“你必须启用 minifyEnabled 才能打开代码收缩”,
  • 最佳答案

    让我们来看看



    这些将在 gradle 日志中。在 Android Studio 内部,我相信这些都显示在 Messages 窗口中(在 Android、Run、TODO 窗口旁边)。


    minify 运行 ProGuard。 shrink 删除 ProGuard 标记为未使用的资源。



    不!



    ProGuard 收缩 仅代码 shrinkResources 这只是 /res/ 文件夹中的内容。 shrinkResources 依赖于 ProGuard 的日志输出来运行。 ProGuard 是真正分析代码以了解未使用内容的人。

    编辑:

    我刚刚找到了一篇非常好的博客文章。 CommonsWare 将其发布在其他一些 stackOverlow 问题上:http://cyrilmottier.com/2014/08/26/putting-your-apks-on-diet/

    它完美地解释了您的后续问题:



    从帖子:



    这意味着, shrinkResources 仅比较可绘制对象是否在文件夹中,而不是在 R 类中。

    关于android - "minifyEnabled"vs "shrinkResources"- 有什么区别?以及如何获得节省的空间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30800804/

    10-13 03:42