Background
According to the "Resource Shrinking" webpage of Andriod documentations (here), you can minimize the app's size via the build.gradle file, by using these lines:
android {
...
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
And, they say that when using it, it will also tell you how much is saved in the process:
When you enable shrinkResources, building your app should display output like the following during the build:
... Removed unused resources: Binary resource data reduced from 2570KB to 1711KB: Removed 33%
The questions
I can't find out the answers to those questions:
- When using Android-Studio itself to create the signed app, where can I find the information of how much was saved and which files were removed/modified?
- What exactly does "shrinkResources" do that "minifyEnabled" don't? And why do "shrinkResources" depend on "minifyEnabled" ?
- Do any of those options affect the size and/or quality of image files?
- Isn't Proguard responsible of shrinking source code? I ask this because it says "you have to enable minifyEnabled in order to turn on code shrinking,"
Let's see
Those are gonna be in the gradle log. Inside Android studio I believe those are shown in the
Messages
window (next to Android, Run, TODO windows).minify
runs ProGuard.shrink
remove resources that ProGuard flagged as unused.No!
ProGuard shrinks CODE ONLY;
shrinkResources
it's just the stuff from the/res/
folder.shrinkResources
depends on the log output from ProGuard to run. ProGuard is the one who actually analyses the code to know what is unused.edit:
I've just found a very nice blog post. CommonsWare posted it on some other stackOverlow question: http://cyrilmottier.com/2014/08/26/putting-your-apks-on-diet/
it explains it perfectly your follow up question:
from the post:
that means, that
shrinkResources
only compares if a drawable is in the folder but not on theR
class.The answers to the questions 2 and 4 can be found in this video from Android Dev Summit 2015 along with some other useful information on this topic.
An overview of the points discussed were: