Proguard removes unused code from the default jar files also from the Google Play Services library. But proguard can not can be used to remove (unused) resources, but I found that there are other options for further optimization of the library.
I was able to use method two to compress the application from 1827 KB to 1115 KB . I tested the application and it works great, and the Google Analytics statistics appear in the interactive dashboard, as expected.
Method 1: Just include the google-play-services.jar file and ignore the R warnings.
The first way is probably the easiest.
Step 1: Copy the google-play-services.jar file from the library project into your own project and go to the libs folder.
Step 2: Remove the library link to the source google-play-services_lib project from your project.
Right click on your project -> Properties -> Android -> Select library -> Remove
Step 3: Add the dontwarn flags to your progruard settings file.
-dontwarn com.google.**.R -dontwarn com.google.**.R$*
Explanation: Google-play-services-jar contains links to generated Java files (R.java). These files are usually generated when the google-play-services_lib project is created. Proguard usually warns you (when you exit with an error) that these files are missing when optimizing the google-play-services.jar file. By adding dontwarn flags, proguard simply ignores the fact that these files are missing and will not exit with an error.
Method 2. Create optimized google-play (-analytics) .jar services
Method two is a more optimized version of one. The difference is that instead of copying the google-play-services.jar file from the library project to your own project, you first optimize the library using proguard.
So what you want to do is to manually run proguard only in google-play-services.jar. To store only Google Analytics, I used this proguard settings file.
-injars google-play-services.jar -outjars google-play-services-analytics.jar -libraryjars [add your path to sdk]/sdk/extras/android/support/v4/android-support-v4.jar -libraryjars [add your path to sdk]/sdk/platforms/android-21/android.jar -dontoptimize -dontobfuscate -dontwarn com.google.**.R -dontwarn com.google.**.R$* -dontnote -keep public class com.google.android.gms.analytics.**, com.google.android.gms.common.**, com.google.android.gms.location.** { public protected *; } -keep class com.google.android.gms.common.internal.safeparcel.SafeParcelable { java.lang.String NULL; }
Step 1: Copy the google-play-services.jar file from the library project to the sdk\tools\proguard\lib folder.
Step 2: Copy the proguard settings file to the sdk\tools\proguard\lib folder.
Step 3: Run progaurd with your settings file:
In the windows: Open a command window β Go to the sdk\tools\proguard\lib folder β Run proguard using:
java -jar proguard.jar @analytics-settings.txt
Step 4: Use the first method described in this post to add optimized google-play-services-analytics.jar to your project. (Remember step 3 in the first method!)
Optimization Results
Before + proguard = 1827 KB Method 1 = 1206 KB Method 2 = 1115 KB