title: Android app using Proguard & R8 differences
body: <p>In my android app i am using <code>Google R8</code>(experimental release for now) and <code>Proguard 6.0.3</code> ...
  According to your experience, what do you think ? What is the main difference ?
  With <code>R8</code> my app is smaller in size and the speed of process compared to <code>Proguard</code> is really much better. Number of classes when using <code>R8</code> are smaller comparing to <code>Proguard</code>.</p>
  <p>R8 is compatible with existing Proguard rules , but it ignore some like :</p>
  <pre><code>Ignoring option: -optimizationpasses&quot;
  Ignoring option: -assumenoexternalreturnvalues&quot;
  Ignoring option: -assumenoexternalsideeffects&quot;
  </code></pre>
  <p>it gives just warning too for missing classes not errors for example :</p>
  <pre><code>AGPBI: {&quot;kind&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Missing class: sun.net.www.protocol.http.HttpURLConnection&quot;,&quot;sources&quot;:[{}],&quot;tool&quot;:&quot;D8&quot;}
  AGPBI: {&quot;kind&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Missing class: com.sun.net.httpserver.HttpHandler&quot;,&quot;sources&quot;:[{}],&quot;tool&quot;:&quot;D8&quot;}
  AGPBI: {&quot;kind&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Missing class: org.dbunit.dataset.datatype.DefaultDataTypeFactory&quot;,&quot;sources&quot;:[{}],&quot;tool&quot;:&quot;D8&quot;}
  AGPBI: {&quot;kind&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Missing class: com.inmobi.ads.InMobiNative$NativeAdListener&quot;,&quot;sources&quot;:[{}],&quot;tool&quot;:&quot;D8&quot;}
  AGPBI: {&quot;kind&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Missing class: javax.enterprise.util.AnnotationLiteral&quot;,&quot;sources&quot;:[{}],&quot;tool&quot;:&quot;D8&quot;}
  AGPBI: {&quot;kind&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Missing class: sun.net.www.protocol.http.Handler&quot;,&quot;sources&quot;:[{}],&quot;tool&quot;:&quot;D8&quot;}
  AGPBI: {&quot;kind&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Missing class: com.flurry.android.ads.FlurryAdNativeListener&quot;,&quot;sources&quot;:[{}],&quot;tool&quot;:&quot;D8&quot;}
  AGPBI: {&quot;kind&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Missing class: sun.net.spi.nameservice.NameServiceDescriptor&quot;,&quot;sources&quot;:[{}],&quot;tool&quot;:&quot;D8&quot;}
  AGPBI: {&quot;kind&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Missing class: java.lang.ClassValue&quot;,&quot;sources&quot;:[{}],&quot;tool&quot;:&quot;D8&quot;}
  </code></pre>
  <p>So in general i think that <code>R8</code> is much better than <code>Proguard</code> regardless for the fact that it is still experimental version.</p>
  <p>Google say :</p>
  <blockquote>
  <p>R8 is a Proguard replacement for whole program minification and
  optimization.</p>
  </blockquote>
  <p>and i think this is really true.</p>
  <p>But how this tools works in details ? What makes main the difference between each other and how the R8 works in deep ?</p>
  <blockquote>
  <p>UPDATE :</p>
  </blockquote>
  <p>After update to Android Studio 3.3 Canary 2 , when using R8 seems that size of APK doesn't have any difference from using Proguard</p>
  <p>p.s : sorry for my English :) :) :)</p>
  <blockquote>
  <p>UPDATE (14-MAR-2019) :</p>
  </blockquote>
  <p>Latest R8 version for the moment <code>V. 1.4.71</code> seems really good, faster than Proguard and when comparing generated Apk/Bundle from R8, the size is smaller. Also DEX method counts are smaller too.
  I am using R8 Shrinker in production and everything seems very promising. Great Job really.</p>
  <blockquote>
  <p>UPDATE (08-APRIL-2019) :</p>
  </blockquote>
  <p>Latest R8 version for the moment <code>V. 1.4.79</code> seems really good, faster than Proguard and when comparing generated Apk/Bundle from R8, the size is smaller. Also DEX method counts are smaller too.
  I am using R8 Shrinker in production and everything seems very promising. Great Job really.</p>