提问者:小点点

“minifyEn的”与“收缩资源”-有什么区别?以及如何获得节省的空间?


根据Andriod文档的“资源收缩”网页(此处),您可以通过build. gradle文件最小化应用程序的大小,方法是使用以下行:

android {
    ...

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

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

当您启用收缩资源时,构建您的应用程序应在构建期间显示如下输出:

…删除了未使用的资源:二进制资源数据从2570KB减少到1711KB:删除了33%

我找不到这些问题的答案:

  1. 使用Android-Studio本身创建签名应用时,在哪里可以找到保存了多少以及删除/修改了哪些文件的信息?
  2. 什么东西是“微缩资源”做不到的?为什么“收缩资源”依赖于“微缩资源”?
  3. 这些选项是否会影响图像文件的大小和/或质量?
  4. ProGuard不是负责缩小源代码的吗?我问这个问题是因为它说“你必须启用minifyEn的才能打开代码缩小”,

共3个答案

匿名用户

让我们看看

使用Android-Studio本身创建签名应用程序时,我在哪里可以找到保存了多少以及删除/修改了哪些文件的信息?

这些将在gradle日志中。在Android Studio中,我相信这些都显示在Messages窗口中(紧挨着Android、Run、待办事项窗口)。

什么是“微缩资源”做的,而“微缩资源”做的?为什么“收缩资源”依赖于“微缩资源”?

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

这些选项是否会影响图像文件的大小和/或质量?

不!

ProGuard不负责缩小源代码吗?我这么问是因为它说“你必须启用minifyEn的才能打开代码缩小,”

ProGuard只收缩代码;收缩资源它只是/res/文件夹中的内容。收缩资源依赖于ProGuard输出的日志来运行。ProGuard是真正分析代码以知道哪些未使用。

编辑:

我刚刚发现了一篇非常好的博客文章。公共软件把它贴在了其他堆栈上。超低问题:http://cyrilmottier.com/2014/08/26/putting-your-apks-on-diet/

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

为什么一个人要依赖另一个人?

从帖子:

ProGuard在Java端工作。不幸的是,它在资源端不起作用。因此,如果不使用res/绘图中my_image的图像,ProGuard只会剥离它在R类中的引用,但会保留相关的图像。

这意味着,只有当可绘制文件在文件夹中而不是在R类中时,收缩资源才会进行比较。

匿名用户

问题2和4的答案可以在2015年Android开发峰会的这段视频中找到,以及有关此主题的其他一些有用信息。

讨论的要点概述如下:

>

  • 只有在minifyEn的为true时才会考虑收缩资源

    minifyEnable收缩代码,而收缩资源收缩代码中未引用的资源

    默认情况下,安全模式下运行。如果您将其切换到严格,您可以提供工具:保留工具:手动丢弃标志以影响资源收缩。

  • 匿名用户

    • 收缩资源有助于减少生成的APK的维度,剥离任何未使用的资源。
    • minifiedEnable简单地运行ProGuard,它帮助android插件在没有未使用代码的情况下打包APK,以缩小它