Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

proguard-android-optimize.txt vs proguard-android.txt in Android build.gradle

Tags:

I was reading the docs about shrinking, obfuscating and optimising for a release build using build.gradle for an Android app. In one section of the docs, proguard-android.txt is used as the defauly ProGuard file:

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

and in another section, proguard-android-optimize.txt is used:

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

There doesn't seem to be an explanation of what the difference between these are, and I can't find any information. Can someone explain what the differences are and when you would use proguard-android-optimize.txt vs proguard-android.txt?

Thanks :)

like image 913
James Allen Avatar asked Jul 05 '19 11:07

James Allen


People also ask

Where ProGuard Android optimize txt?

The getDefaultProguardFile() refers default file “proguard-android. txt” which gets from the Android SDK tools/proguard/ folder. You can also use “proguard-android-optimize. txt” file for more code shrinking located on the same folder.

What is ProGuard Android txt?

ProGuard is a tool to help minify, obfuscate, and optimize your code. It is not only especially useful for reducing the overall size of your Android application as well as removing unused classes and methods that contribute towards the intrinsic 64k method limit of Android applications.

Should I use R8 or ProGuard?

R8 is having a faster processing time than Proguard which reduces build time. R8 gives better output results than Proguard. R8 reduces the app size by 10 % whereas Proguard reduces app size by 8.5 %. The android app having a Gradle plugin above 3.4.

What is ProGuard optimization?

ProGuard optimizes Gson code by detecting which domain classes are serialized using the Gson library. It replaces the reflection-based implementation of GSON for reading and writing fields with injected and optimized code that accesses the fields of the domain classes directly when reading and writing JSON.


1 Answers

Take a look at the Android source code over here.

Optimizations: If you don't want to optimize, use the proguard-android.txt configuration file instead of this one, which turns off the optimization flags. Adding optimization introduces certain risks, since for example not all optimizations performed by ProGuard works on all versions of Dalvik. The following flags turn off various optimizations known to have issues, but the list may not be complete or up to date. (The "arithmetic" optimization can be used if you are only targeting Android 2.0 or later.) Make sure you test thoroughly if you go this route.

Also, this answer is a pretty good read as well.

like image 146
Raimo Avatar answered Sep 21 '22 21:09

Raimo