【发布时间】:2015-06-12 10:27:49
【问题描述】:
背景
根据 Andriod 文档 (here) 的“Resource Shrinking”网页,您可以通过 build.gradle 文件最小化应用程序的大小,使用以下几行:
android {
...
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
而且,他们说在使用的时候,它还会告诉你在这个过程中节省了多少:
当您启用 shrinkResources 时,构建您的应用程序应该会显示 在构建过程中输出如下:
... 删除了未使用的资源:二进制资源数据从 2570KB 减少到 1711KB:删除 33%
问题
我找不到这些问题的答案:
- 使用 Android-Studio 本身创建签名应用时,我在哪里可以找到保存了多少以及删除/修改了哪些文件的信息?
- “shrinkResources”究竟做了什么而“minifyEnabled”却没有?为什么“shrinkResources”依赖于“minifyEnabled”?
- 这些选项是否会影响图像文件的大小和/或质量?
- Proguard 不负责压缩源代码吗?我问这个是因为它说“你必须启用 minifyEnabled 才能打开代码收缩”,
【问题讨论】:
-
shrinkResources 删除所有未使用的资源,因此没有质量问题或其他问题。 mimifyEnabled 不会删除它。我认为必须使用 mimifyEnabled 来获得未使用资源的列表。
-
所以只有“minifyEnabled”没有任何作用?并且“shrinkResources”不会缩小任何东西?如何查看节省的空间?以及删除了哪些文件?
-
我认为是的,你可以在这里阅读tools.android.com/tech-docs/new-build-system/resource-shrinking 要使用收缩,你必须将 mimifyEnabled 设置为 true。这是因为 mimifyEnabled 删除未使用的代码,而 shrinkResources 删除未使用的资源(大部分或全部在未使用的代码中调用)。
-
Proguard 不负责删除未使用的代码吗?
-
minifyEnabled 启用 proguard,它会删除未使用的类/代码,而 shrinkResources 会删除未使用的资源(png、xml,主要由您未充分利用的库引入)。
标签: android build.gradle