根据Andriod文档的“资源收缩”网页(此处),您可以通过build. gradle文件最小化应用程序的大小,方法是使用以下行:
android {
...
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
而且,他们说当使用它时,它还会告诉你在这个过程中节省了多少:
当您启用收缩资源时,构建您的应用程序应在构建期间显示如下输出:
…删除了未使用的资源:二进制资源数据从2570KB减少到1711KB:删除了33%
我找不到这些问题的答案:
让我们看看
使用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
收缩代码,而收缩资源
收缩代码中未引用的资源
默认情况下,在
安全
模式下运行。如果您将其切换到严格
,您可以提供工具:保留
和工具:手动丢弃
标志以影响资源收缩。