title: ClassNotFoundException: Didn't find class "com.google.android.gms.ads.AdView"
body: <p>I did a lot of research and this seems to be a common error for many users but for very different reasons. None of which I found worked for me.</p>
  
  <p>I'm getting</p>
  
  <pre><code>java.lang.RuntimeException: Unable to start activity ComponentInfo{
  [...]/[...].activities.StartActivity}: android.view.InflateException:
  Binary XML file line #173: Error inflating class [...].BannerAd
      [...]
  Caused by: android.view.InflateException: Binary XML file line #8: Error
  inflating class com.google.android.gms.ads.AdView
      [...]
  Caused by: java.lang.ClassNotFoundException: Didn't find class
  "com.google.android.gms.ads.AdView" on path: DexPathList[[zip file
  "/data/app/[...]-1.apk"],nativeLibraryDirectories=[/data/app-lib/[...]-1,
  /vendor/lib, /system/lib]]
  </code></pre>
  
  <p>I'm having the newest versions of ADT and SDK packages installed. I copied google-play-services_lib to my workspace and imported it as a Android project. I added it as a library to my app project. I checked everything under "Order and Export".</p>
  
  <p>I'm having a banner_ad.xml:</p>
  
  <pre><code>&lt;LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="center_horizontal|top"
      android:orientation="vertical" &gt;
  
      &lt;com.google.android.gms.ads.AdView
          xmlns:ads="http://schemas.android.com/apk/res-auto"
          android:id="@+id/adView"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          ads:adSize="BANNER"
          ads:adUnitId="[...]" /&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>And a BannerAd.java which I am using:</p>
  
  <pre><code>package [...];
  
  import android.content.Context;
  import android.util.AttributeSet;
  import android.view.LayoutInflater;
  import android.widget.LinearLayout;
  
  import [...].R;
  import [...].general.Settings;
  import com.google.android.gms.ads.AdRequest;
  import com.google.android.gms.ads.AdView;
  
  
  public class BannerAd extends LinearLayout {
      public BannerAd(Context context, AttributeSet attrs) {
          super(context, attrs);
  
          if (!Settings.PRO) {
              LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              mInflater.inflate(R.layout.banner_ad, this, true);
  
              AdView adView = (AdView) this.findViewById(R.id.adView);
              AdRequest adRequest = new AdRequest.Builder().build();
              adView.loadAd(adRequest);
          }
      }
  }
  </code></pre>
  
  <p>Could it have something to do with proguard? I have no idea, this is my proguard-project.txt file, however:</p>
  
  <pre><code># To enable ProGuard in your project, edit project.properties
  # to define the proguard.config property as described in that file.
  #
  # Add project specific ProGuard rules here.
  # By default, the flags in this file are appended to flags specified
  # in ${sdk.dir}/tools/proguard/proguard-android.txt
  # You can edit the include path and order by changing the ProGuard
  # include property in project.properties.
  #
  # For more details, see
  #   http://developer.android.com/guide/developing/tools/proguard.html
  
  # Add any project specific keep options here:
  
  # If your project uses WebView with JS, uncomment the following
  # and specify the fully qualified class name to the JavaScript interface
  # class:
  #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
  #   public *;
  #}
  
  -keep class * extends java.util.ListResourceBundle {
      protected Object[][] getContents();
  }
  
  -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
      public static final *** NULL;
  }
  
  -keepnames @com.google.android.gms.common.annotation.KeepName class *
  -keepclassmembernames class * {
      @com.google.android.gms.common.annotation.KeepName *;
  }
  
  -keepnames class * implements android.os.Parcelable {
      public static final ** CREATOR;
  }
  </code></pre>
  
  <p>Any ideas what I could try to fix this?</p>
  
  <p>Edit: Sometimes, I also get such output in the console (but not every time I compile, only sometimes):</p>
  
  <pre><code>[2014-07-24 12:49:05 - [...]] Dx 
  trouble processing:
  [2014-07-24 12:49:05 - [...]] Dx bad class file magic (cafebabe) or version (0033.0000)
  ...while parsing com/google/android/gms/internal/mb.class
  ...while processing com/google/android/gms/internal/mb.class
  [2014-07-24 12:49:05 - [...]] Dx 
  trouble processing:
  [2014-07-24 12:49:05 - [...]] Dx bad class file magic (cafebabe) or version (0033.0000)
  ...while parsing com/google/android/gms/internal/mc.class
  ...while processing com/google/android/gms/internal/mc.class
  [2014-07-24 12:49:05 - [...]] Dx 
  [...]
  [Lots of similar warnings here]
  [...]
  trouble processing:
  [2014-07-24 12:49:25 - [...]] Dx bad class file magic (cafebabe) or version (0033.0000)
  ...while parsing com/google/ads/mediation/customevent/CustomEventAdapter$a.class
  ...while processing com/google/ads/mediation/customevent/CustomEventAdapter$a.class
  [2014-07-24 12:49:25 - [...]] Dx 
  trouble processing:
  [2014-07-24 12:49:25 - [...]] Dx bad class file magic (cafebabe) or version (0033.0000)
  ...while parsing com/google/ads/mediation/customevent/CustomEventServerParameters.class
  ...while processing com/google/ads/mediation/customevent/CustomEventServerParameters.class
  [2014-07-24 12:49:25 - [...]] Dx 2786 warnings
  </code></pre>