title: How to get release build apk file using proguard
body: <p>I am trying to use <a href="http://proguard.sourceforge.net/" rel="nofollow">ProGuard</a> to make release apk file for my project, Apparently I am using many third party libraries, Where I need to use only few classes from them, I would really like to get some explanation regarding this.</p>
  
  <p>My debug build is going more than <code>20-MB</code>, so I would like to reduce that by using <code>shrinking</code> used in <code>proguard</code>, But It is giving me some warning which I can't figure out, went though <a href="http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass" rel="nofollow">troubleshooting</a>, I don't know what changes should I make,</p>
  
  <pre><code>buildTypes {
      release {
          minifyEnabled true
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      }
  }
  </code></pre>
  
  <p>Above line show the snippet of <code>build.gradle</code> in module:app</p>
  
  <pre><code>-keepattributes InnerClasses
  </code></pre>
  
  <p>This is what i am using to suppress some warnings in <code>proguard-rules.pro</code>, i did go though other question on Proguard but could not get it.
  I have mentioned the Messages that I am getting while trying to get release build </p>
  
  <pre><code>Note: duplicate definition of library class [android.net.http.SslError]
  Note: duplicate definition of library class [android.net.http.SslCertificate]
  Note: duplicate definition of library class [android.net.http.SslCertificate$DName]
  Note: duplicate definition of library class [org.apache.http.conn.scheme.HostNameResolver]
  Note: duplicate definition of library class [org.apache.http.conn.scheme.SocketFactory]
  Note: duplicate definition of library class [org.apache.http.conn.ConnectTimeoutException]
  Note: duplicate definition of library class [org.apache.http.params.HttpParams]
  Note: there were 7 duplicate class definitions.
        (http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
  Initializing...
  Note: the configuration refers to the unknown class 'com.google.vending.licensing.ILicensingService'
  Note: the configuration refers to the unknown class 'com.android.vending.licensing.ILicensingService'
  Note: android.support.v4.app.NotificationCompatJellybean calls 'Field.getType'
  Note: com.google.android.gms.internal.zzsv calls 'Field.getType'
  Note: com.google.gson.FieldAttributes calls 'Field.getGenericType'
  Note: com.google.gson.FieldAttributes calls 'Field.getType'
  Note: com.google.gson.internal.$Gson$Types calls 'Class.getGenericInterfaces'
  Note: com.google.gson.internal.$Gson$Types calls 'Class.getGenericSuperclass'
  Note: com.google.gson.internal.$Gson$Types calls 'Class.getTypeParameters'
  Note: com.google.gson.internal.Excluder calls 'Field.getType'
  Note: com.google.gson.internal.bind.ReflectiveTypeAdapterFactory calls 'Field.getType'
  Note: com.google.gson.internal.bind.ReflectiveTypeAdapterFactory calls 'Field.getGenericType'
  Note: com.google.gson.internal.bind.ReflectiveTypeAdapterFactory calls 'Class.getGenericSuperclass'
  Note: com.google.gson.reflect.TypeToken calls 'Class.getGenericSuperclass'
  Note: com.google.gson.reflect.TypeToken calls 'Class.getTypeParameters'
  Note: com.google.gson.reflect.TypeToken calls 'Class.getGenericInterfaces'
  Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient
  Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkUrlFactory
  Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.Cache
  Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient
  Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkUrlFactory
  Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient
  Note: android.support.v4.text.ICUCompatApi23: can't find dynamically referenced class libcore.icu.ICU
  Note: android.support.v4.text.ICUCompatIcs: can't find dynamically referenced class libcore.icu.ICU
  Note: android.support.v7.widget.DrawableUtils: can't find dynamically referenced class android.graphics.Insets
  Note: com.google.android.gms.internal.zzlh: can't find dynamically referenced class com.facebook.Session
  Note: com.google.android.gms.internal.zzlh: can't find dynamically referenced class com.facebook.FacebookSdk
  Note: com.google.android.gms.internal.zzlh: can't find dynamically referenced class com.facebook.login.LoginManager
  Note: com.google.android.gms.internal.zzlh: can't find dynamically referenced class com.facebook.Session
  Note: com.google.android.gms.internal.zzlh: can't find dynamically referenced class com.facebook.login.LoginManager
  Note: com.google.android.gms.internal.zzlh: can't find dynamically referenced class com.facebook.Session$OpenRequest
  Note: com.google.android.gms.internal.zzlh: can't find dynamically referenced class com.facebook.Session
  Note: com.google.android.gms.internal.zzlh: can't find dynamically referenced class com.facebook.Session$StatusCallback
  Note: com.google.android.gms.internal.zzlh: can't find dynamically referenced class com.facebook.Session
  Note: com.google.android.gms.internal.zzlh: can't find dynamically referenced class com.facebook.Session$StatusCallback
  Note: com.google.android.gms.internal.zzlh$1: can't find dynamically referenced class com.facebook.SessionState
  Note: com.google.android.gms.maps.internal.zzad: can't find dynamically referenced class com.google.android.gms.maps.internal.CreatorImpl
  Note: com.google.gson.internal.UnsafeAllocator: can't find dynamically referenced class sun.misc.Unsafe
  Note: com.squareup.picasso.Utils: can't find dynamically referenced class com.squareup.okhttp.OkUrlFactory
  Note: com.squareup.picasso.Utils: can't find dynamically referenced class com.squareup.okhttp.OkHttpClient
  Note: android.support.v4.app.NotificationCompatJellybean accesses a declared field 'icon' dynamically
        Maybe this is program field 'android.support.design.R$attr { int icon; }'
        Maybe this is program field 'android.support.design.R$id { int icon; }'
        Maybe this is program field 'android.support.v4.app.NotificationCompat$Action { int icon; }'
        Maybe this is program field 'android.support.v7.appcompat.R$attr { int icon; }'
        Maybe this is program field 'android.support.v7.appcompat.R$id { int icon; }'
        Maybe this is program field 'android.support.v7.mediarouter.R$attr { int icon; }'
        Maybe this is program field 'android.support.v7.mediarouter.R$id { int icon; }'
        Maybe this is program field 'com.nimgade.pk.mytest101.R$attr { int icon; }'
        Maybe this is program field 'com.nimgade.pk.mytest101.R$id { int icon; }'
        Maybe this is library field 'android.R$attr { int icon; }'
        Maybe this is library field 'android.R$id { int icon; }'
        Maybe this is library field 'android.app.LauncherActivity$ListItem { android.graphics.drawable.Drawable icon; }'
        Maybe this is library field 'android.app.Notification { int icon; }'
        Maybe this is library field 'android.app.Notification$Action { int icon; }'
        Maybe this is library field 'android.appwidget.AppWidgetProviderInfo { int icon; }'
        Maybe this is library field 'android.content.pm.PackageItemInfo { int icon; }'
        Maybe this is library field 'android.content.pm.ResolveInfo { int icon; }'
        Maybe this is library field 'android.inputmethodservice.Keyboard$Key { android.graphics.drawable.Drawable icon; }'
        Maybe this is library field 'android.speech.tts.TextToSpeech$EngineInfo { int icon; }'
  Note: android.support.v4.app.NotificationCompatJellybean accesses a declared field 'title' dynamically
        Maybe this is program field 'android.support.design.R$attr { int title; }'
        Maybe this is program field 'android.support.design.R$id { int title; }'
        Maybe this is program field 'android.support.v4.app.NotificationCompat$Action { java.lang.CharSequence title; }'
        Maybe this is program field 'android.support.v7.appcompat.R$attr { int title; }'
        Maybe this is program field 'android.support.v7.appcompat.R$id { int title; }'
        Maybe this is program field 'android.support.v7.mediarouter.R$attr { int title; }'
        Maybe this is program field 'android.support.v7.mediarouter.R$id { int title; }'
        Maybe this is program field 'com.google.android.gms.games.internal.player.PlayerColumnNames { java.lang.String title; }'
        Maybe this is program field 'com.google.android.gms.vision.barcode.Barcode$ContactInfo { java.lang.String title; }'
        Maybe this is program field 'com.google.android.gms.vision.barcode.Barcode$UrlBookmark { java.lang.String title; }'
        Maybe this is program field 'com.nimgade.pk.mytest101.R$attr { int title; }'
        Maybe this is program field 'com.nimgade.pk.mytest101.R$id { int title; }'
        Maybe this is library field 'android.R$attr { int title; }'
        Maybe this is library field 'android.R$id { int title; }'
        Maybe this is library field 'android.app.Notification$Action { java.lang.CharSequence title; }'
        Maybe this is library field 'android.preference.PreferenceActivity$Header { java.lang.CharSequence title; }'
  Note: android.support.v4.app.NotificationCompatJellybean accesses a declared field 'actionIntent' dynamically
        Maybe this is program field 'android.support.v4.app.NotificationCompat$Action { android.app.PendingIntent actionIntent; }'
        Maybe this is library field 'android.app.Notification$Action { android.app.PendingIntent actionIntent; }'
  Note: com.google.gson.internal.UnsafeAllocator accesses a declared field 'theUnsafe' dynamically
  Note: the configuration keeps the entry point 'android.support.design.widget.AppBarLayout { void setWindowInsets(android.support.v4.view.WindowInsetsCompat); }', but not the descriptor class 'android.support.v4.view.WindowInsetsCompat'
  Note: the configuration keeps the entry point 'android.support.design.widget.CoordinatorLayout { void setWindowInsets(android.support.v4.view.WindowInsetsCompat); }', but not the descriptor class 'android.support.v4.view.WindowInsetsCompat'
  Note: the configuration keeps the entry point 'android.support.design.widget.NavigationView { void setNavigationItemSelectedListener(android.support.design.widget.NavigationView$OnNavigationItemSelectedListener); }', but not the descriptor class 'android.support.design.widget.NavigationView$OnNavigationItemSelectedListener'
  Note: the configuration keeps the entry point 'android.support.design.widget.Snackbar$SnackbarLayout { void setOnLayoutChangeListener(android.support.design.widget.Snackbar$SnackbarLayout$OnLayoutChangeListener); }', but not the descriptor class 'android.support.design.widget.Snackbar$SnackbarLayout$OnLayoutChangeListener'
  Note: the configuration keeps the entry point 'android.support.design.widget.Snackbar$SnackbarLayout { void setOnAttachStateChangeListener(android.support.design.widget.Snackbar$SnackbarLayout$OnAttachStateChangeListener); }', but not the descriptor class 'android.support.design.widget.Snackbar$SnackbarLayout$OnAttachStateChangeListener'
  Note: the configuration keeps the entry point 'android.support.design.widget.TabLayout { void setOnTabSelectedListener(android.support.design.widget.TabLayout$OnTabSelectedListener); }', but not the descriptor class 'android.support.design.widget.TabLayout$OnTabSelectedListener'
  Note: the configuration keeps the entry point 'android.support.design.widget.TabLayout { void setTabsFromPagerAdapter(android.support.v4.view.PagerAdapter); }', but not the descriptor class 'android.support.v4.view.PagerAdapter'
  Note: the configuration keeps the entry point 'android.support.v4.view.ViewPager { void setAdapter(android.support.v4.view.PagerAdapter); }', but not the descriptor class 'android.support.v4.view.PagerAdapter'
  Note: the configuration keeps the entry point 'android.support.v4.view.ViewPager { void setOnAdapterChangeListener(android.support.v4.view.ViewPager$OnAdapterChangeListener); }', but not the descriptor class 'android.support.v4.view.ViewPager$OnAdapterChangeListener'
  Note: the configuration keeps the entry point 'android.support.v4.view.ViewPager { void setOnPageChangeListener(android.support.v4.view.ViewPager$OnPageChangeListener); }', but not the descriptor class 'android.support.v4.view.ViewPager$OnPageChangeListener'
  Note: the configuration keeps the entry point 'android.support.v4.widget.DrawerLayout { void setDrawerListener(android.support.v4.widget.DrawerLayout$DrawerListener); }', but not the descriptor class 'android.support.v4.widget.DrawerLayout$DrawerListener'
  Note: the configuration keeps the entry point 'android.support.v4.widget.NestedScrollView { void setOnScrollChangeListener(android.support.v4.widget.NestedScrollView$OnScrollChangeListener); }', but not the descriptor class 'android.support.v4.widget.NestedScrollView$OnScrollChangeListener'
  Note: the configuration keeps the entry point 'android.support.v4.widget.SlidingPaneLayout { void setPanelSlideListener(android.support.v4.widget.SlidingPaneLayout$PanelSlideListener); }', but not the descriptor class 'android.support.v4.widget.SlidingPaneLayout$PanelSlideListener'
  Note: the configuration keeps the entry point 'android.support.v4.widget.SwipeRefreshLayout { void setOnRefreshListener(android.support.v4.widget.SwipeRefreshLayout$OnRefreshListener); }', but not the descriptor class 'android.support.v4.widget.SwipeRefreshLayout$OnRefreshListener'
  Note: the configuration keeps the entry point 'android.support.v7.app.MediaRouteButton { void setRouteSelector(android.support.v7.media.MediaRouteSelector); }', but not the descriptor class 'android.support.v7.media.MediaRouteSelector'
  Note: the configuration keeps the entry point 'android.support.v7.app.MediaRouteButton { void setDialogFactory(android.support.v7.app.MediaRouteDialogFactory); }', but not the descriptor class 'android.support.v7.app.MediaRouteDialogFactory'
  Note: the configuration keeps the entry point 'android.support.v7.view.menu.ActionMenuItemView { void setItemInvoker(android.support.v7.view.menu.MenuBuilder$ItemInvoker); }', but not the descriptor class 'android.support.v7.view.menu.MenuBuilder$ItemInvoker'
  Note: the configuration keeps the entry point 'android.support.v7.view.menu.ActionMenuItemView { void setPopupCallback(android.support.v7.view.menu.ActionMenuItemView$PopupCallback); }', but not the descriptor class 'android.support.v7.view.menu.ActionMenuItemView$PopupCallback'
  Note: the configuration keeps the entry point 'android.support.v7.widget.ActionBarContainer { void setTabContainer(android.support.v7.widget.ScrollingTabContainerView); }', but not the descriptor class 'android.support.v7.widget.ScrollingTabContainerView'
  Note: the configuration keeps the entry point 'android.support.v7.widget.ActionBarOverlayLayout { void setActionBarVisibilityCallback(android.support.v7.widget.ActionBarOverlayLayout$ActionBarVisibilityCallback); }', but not the descriptor class 'android.support.v7.widget.ActionBarOverlayLayout$ActionBarVisibilityCallback'
  Note: the configuration keeps the entry point 'android.support.v7.widget.ActionMenuView { void setPresenter(android.support.v7.widget.ActionMenuPresenter); }', but not the descriptor class 'android.support.v7.widget.ActionMenuPresenter'
  Note: the configuration keeps the entry point 'android.support.v7.widget.ActionMenuView { void setOnMenuItemClickListener(android.support.v7.widget.ActionMenuView$OnMenuItemClickListener); }', but not the descriptor class 'android.support.v7.widget.ActionMenuView$OnMenuItemClickListener'
  Note: the configuration keeps the entry point 'android.support.v7.widget.ActivityChooserView { void setActivityChooserModel(android.support.v7.widget.ActivityChooserModel); }', but not the descriptor class 'android.support.v7.widget.ActivityChooserModel'
  Note: the configuration keeps the entry point 'android.support.v7.widget.ActivityChooserView { void setProvider(android.support.v4.view.ActionProvider); }', but not the descriptor class 'android.support.v4.view.ActionProvider'
  Note: the configuration keeps the entry point 'android.support.v7.widget.ContentFrameLayout { void setAttachListener(android.support.v7.widget.ContentFrameLayout$OnAttachListener); }', but not the descriptor class 'android.support.v7.widget.ContentFrameLayout$OnAttachListener'
  Note: the configuration keeps the entry point 'android.support.v7.widget.FitWindowsFrameLayout { void setOnFitSystemWindowsListener(android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener); }', but not the descriptor class 'android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener'
  Note: the configuration keeps the entry point 'android.support.v7.widget.FitWindowsLinearLayout { void setOnFitSystemWindowsListener(android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener); }', but not the descriptor class 'android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener'
  Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setAccessibilityDelegateCompat(android.support.v7.widget.RecyclerViewAccessibilityDelegate); }', but not the descriptor class 'android.support.v7.widget.RecyclerViewAccessibilityDelegate'
  Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setAdapter(android.support.v7.widget.RecyclerView$Adapter); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$Adapter'
  Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setRecyclerListener(android.support.v7.widget.RecyclerView$RecyclerListener); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$RecyclerListener'
  Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$LayoutManager'
  Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setRecycledViewPool(android.support.v7.widget.RecyclerView$RecycledViewPool); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$RecycledViewPool'
  Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setViewCacheExtension(android.support.v7.widget.RecyclerView$ViewCacheExtension); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$ViewCacheExtension'
  Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setChildDrawingOrderCallback(android.support.v7.widget.RecyclerView$ChildDrawingOrderCallback); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$ChildDrawingOrderCallback'
  Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setOnScrollListener(android.support.v7.widget.RecyclerView$OnScrollListener); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$OnScrollListener'
  Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setItemAnimator(android.support.v7.widget.RecyclerView$ItemAnimator); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$ItemAnimator'
  Note: the configuration keeps the entry point 'android.support.v7.widget.SearchView { void setOnQueryTextListener(android.support.v7.widget.SearchView$OnQueryTextListener); }', but not the descriptor class 'android.support.v7.widget.SearchView$OnQueryTextListener'
  Note: the configuration keeps the entry point 'android.support.v7.widget.SearchView { void setOnCloseListener(android.support.v7.widget.SearchView$OnCloseListener); }', but not the descriptor class 'android.support.v7.widget.SearchView$OnCloseListener'
  Note: the configuration keeps the entry point 'android.support.v7.widget.SearchView { void setOnSuggestionListener(android.support.v7.widget.SearchView$OnSuggestionListener); }', but not the descriptor class 'android.support.v7.widget.SearchView$OnSuggestionListener'
  Note: the configuration keeps the entry point 'android.support.v7.widget.SearchView { void setSuggestionsAdapter(android.support.v4.widget.CursorAdapter); }', but not the descriptor class 'android.support.v4.widget.CursorAdapter'
  Note: the configuration keeps the entry point 'android.support.v7.widget.SearchView$SearchAutoComplete { void setSearchView(android.support.v7.widget.SearchView); }', but not the descriptor class 'android.support.v7.widget.SearchView'
  Note: the configuration keeps the entry point 'android.support.v7.widget.Toolbar { void setOnMenuItemClickListener(android.support.v7.widget.Toolbar$OnMenuItemClickListener); }', but not the descriptor class 'android.support.v7.widget.Toolbar$OnMenuItemClickListener'
  Note: the configuration keeps the entry point 'android.support.v7.widget.ViewStubCompat { void setOnInflateListener(android.support.v7.widget.ViewStubCompat$OnInflateListener); }', but not the descriptor class 'android.support.v7.widget.ViewStubCompat$OnInflateListener'
  Note: the configuration keeps the entry point 'com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView { void setImage(com.davemorrissey.labs.subscaleview.ImageSource); }', but not the descriptor class 'com.davemorrissey.labs.subscaleview.ImageSource'
  Note: the configuration keeps the entry point 'com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView { void setRegionDecoderFactory(com.davemorrissey.labs.subscaleview.decoder.DecoderFactory); }', but not the descriptor class 'com.davemorrissey.labs.subscaleview.decoder.DecoderFactory'
  Note: the configuration keeps the entry point 'com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView { void setBitmapDecoderFactory(com.davemorrissey.labs.subscaleview.decoder.DecoderFactory); }', but not the descriptor class 'com.davemorrissey.labs.subscaleview.decoder.DecoderFactory'
  Note: the configuration keeps the entry point 'com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView { void setOnImageEventListener(com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView$OnImageEventListener); }', but not the descriptor class 'com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView$OnImageEventListener'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.AdView { void setInAppPurchaseListener(com.google.android.gms.ads.purchase.InAppPurchaseListener); }', but not the descriptor class 'com.google.android.gms.ads.purchase.InAppPurchaseListener'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.AdView { void setAdSize(com.google.android.gms.ads.AdSize); }', but not the descriptor class 'com.google.android.gms.ads.AdSize'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.AdView { void setAdListener(com.google.android.gms.ads.AdListener); }', but not the descriptor class 'com.google.android.gms.ads.AdListener'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.BaseAdView { void setAdListener(com.google.android.gms.ads.AdListener); }', but not the descriptor class 'com.google.android.gms.ads.AdListener'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.BaseAdView { void setAdSize(com.google.android.gms.ads.AdSize); }', but not the descriptor class 'com.google.android.gms.ads.AdSize'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.BaseAdView { void setInAppPurchaseListener(com.google.android.gms.ads.purchase.InAppPurchaseListener); }', but not the descriptor class 'com.google.android.gms.ads.purchase.InAppPurchaseListener'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.NativeExpressAdView { void setInAppPurchaseListener(com.google.android.gms.ads.purchase.InAppPurchaseListener); }', but not the descriptor class 'com.google.android.gms.ads.purchase.InAppPurchaseListener'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.NativeExpressAdView { void setAdSize(com.google.android.gms.ads.AdSize); }', but not the descriptor class 'com.google.android.gms.ads.AdSize'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.NativeExpressAdView { void setAdListener(com.google.android.gms.ads.AdListener); }', but not the descriptor class 'com.google.android.gms.ads.AdListener'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.doubleclick.PublisherAdView { void setAdListener(com.google.android.gms.ads.AdListener); }', but not the descriptor class 'com.google.android.gms.ads.AdListener'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.doubleclick.PublisherAdView { void setAdSizes(com.google.android.gms.ads.AdSize[]); }', but not the descriptor class 'com.google.android.gms.ads.AdSize'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.doubleclick.PublisherAdView { void setAppEventListener(com.google.android.gms.ads.doubleclick.AppEventListener); }', but not the descriptor class 'com.google.android.gms.ads.doubleclick.AppEventListener'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.doubleclick.PublisherAdView { void setCorrelator(com.google.android.gms.ads.Correlator); }', but not the descriptor class 'com.google.android.gms.ads.Correlator'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.doubleclick.PublisherAdView { void setOnCustomRenderedAdLoadedListener(com.google.android.gms.ads.doubleclick.OnCustomRenderedAdLoadedListener); }', but not the descriptor class 'com.google.android.gms.ads.doubleclick.OnCustomRenderedAdLoadedListener'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.formats.NativeAdView { void setNativeAd(com.google.android.gms.ads.formats.NativeAd); }', but not the descriptor class 'com.google.android.gms.ads.formats.NativeAd'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.search.SearchAdView { void setAdListener(com.google.android.gms.ads.AdListener); }', but not the descriptor class 'com.google.android.gms.ads.AdListener'
  Note: the configuration keeps the entry point 'com.google.android.gms.ads.search.SearchAdView { void setAdSize(com.google.android.gms.ads.AdSize); }', but not the descriptor class 'com.google.android.gms.ads.AdSize'
  Note: the configuration keeps the entry point 'com.google.android.gms.flags.impl.FlagProviderImpl { void init(com.google.android.gms.dynamic.zzd); }', but not the descriptor class 'com.google.android.gms.dynamic.zzd'
  Note: the configuration keeps the entry point 'com.google.android.gms.plus.PlusOneButton { void setOnPlusOneClickListener(com.google.android.gms.plus.PlusOneButton$OnPlusOneClickListener); }', but not the descriptor class 'com.google.android.gms.plus.PlusOneButton$OnPlusOneClickListener'
  Note: there were 2 references to unknown classes.
        You should check your configuration for typos.
        (http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass)
  Note: there were 14 classes trying to access generic signatures using reflection.
        You should consider keeping the signature attributes
        (using '-keepattributes Signature').
        (http://proguard.sourceforge.net/manual/troubleshooting.html#attributes)
  Note: there were 66 unkept descriptor classes in kept class members.
        You should consider explicitly keeping the mentioned classes
        (using '-keep').
        (http://proguard.sourceforge.net/manual/troubleshooting.html#descriptorclass)
  Note: there were 18 unresolved dynamic references to classes or interfaces.
        You should check if you need to specify additional program jars.
        (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass)
  Note: there were 4 accesses to class members by means of introspection.
        You should consider explicitly keeping the mentioned class members
        (using '-keep' or '-keepclassmembers').
        (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember)
  Warning:there were 13 unresolved references to classes or interfaces.
           You may need to add missing library jars or update their versions.
           If your code works fine without the missing classes, you can suppress
           the warnings with '-dontwarn' options.
           (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
  Warning:Exception while processing task java.io.IOException: Please correct the above warnings first.
  :app:transformClassesAndResourcesWithProguardForRelease FAILED
  Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
  &gt; java.io.IOException: Please correct the above warnings first.
  </code></pre>