android开发分享“minifyEnabled”vs“shrinkResources” – 有什么区别? 以及如何获得节省的空间?


背景

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

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

而且,他们说使用它时,它也会告诉你在这个过程中保存了多less东西:

当您启用shrinkResources时,构build应用程序应在构build过程中显示如下所示的输出:

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

问题

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

    让我们来看看

    当使用Android-Studio自己创build已签名的应用程序时,在哪里可以find已保存多less以及哪些文件被删除/修改的信息?

    那些将在gradle日志中。 在Android工作室里面,我相信这些显示在Messages窗口中(Android,Run,TODO窗口旁边)。

    “shrinkResources”究竟做了那个“minifyEnabled”不? 为什么“shrinkResources”依赖于“minifyEnabled”?

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

    这些选项中的任何一个都会影响图像文件的大小和质量?

    没有!

    Proguard不负责缩减源代码吗? 我问这个,因为它说“你必须启用minifyEnabled才能打开代码缩小”

    ProGuard 收缩代码 ; shrinkResources它只是来自/res/文件夹的内容。 shrinkResources取决于ProGuard运行的日志输出。 ProGuard是真正分析代码以了解什么是未使用的人。

    编辑:

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

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

    为什么要依靠对方?

    从post:

    Proguard在Java方面工作。 不幸的是,这在资源方面不起作用。 因此,如果不使用res / drawable中的图像my_image,则Proguard仅在R类中删除它的引用,但保留关联的图像。

    这意味着,仅当drawable位于文件夹中,而不是R类时, shrinkResources才会进行比较。

    问题2和4的答案可以在Android Dev Summit 2015的video中find,以及其他一些有关此主题的有用信息。

    讨论的要点概述如下:

    以上就是android开发分享“minifyEnabled”vs“shrinkResources” – 有什么区别? 以及如何获得节省的空间?相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/513936.html

      (0)
      上一篇 2020年11月29日
      下一篇 2020年11月29日

      精彩推荐