According to the \"Resource Shrinking\" webpage of Andriod documentations (here), you can minimize the app\'s size via the build.gradle file, by using t
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:
shrinkResourcesis taken into account only ifminifyEnabledis true
minifyEnabledshrinks code, whileshrinkResourcesshrinks resources that are not referenced from the codeBy default
shrinkResourcesruns insafemode. If you switch it tostrictyou can providetools:keepandtools:discardflags manually to influence the resource shrinking.
Let's see
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?
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).
What exactly does "shrinkResources" do that "minifyEnabled" don't? And why do "shrinkResources" depend on "minifyEnabled" ?
minify runs ProGuard. shrink remove resources that ProGuard flagged as unused.
Do any of those options affect the size and/or quality of image files?
No!
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,"
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:
why would one depend on the other?
from the post:
Proguard works on the Java side. Unfortunately, it doesn’t work on the resources side. As a consequence, if an image my_image in res/drawable is not used, Proguard only strips it’s reference in the R class but keeps the associated image in place.
that means, that shrinkResources only compares if a drawable is in the folder but not on the R class.