title: Why is there a class missing when I compile my app?
body: <p>I'm trying to implement drive storage into my app, and I'm having a bit of an issue getting it to run. It compiles fine (no errors), but there's some class files getting lost somewhere. The error when launching my app is as follows:</p>
  
  <pre><code>01-24 18:40:09.747    1038-8218/? I/ActivityManager﹕ Start proc net.rymate.notes for activity net.rymate.notes/.activities.NotesListActivity: pid=6099 uid=10102 gids={50102, 3003}
  01-24 18:40:09.748    1038-1103/? D/WifiStateMachine﹕ handleMessage: X
  01-24 18:40:09.772    6099-6105/? D/dalvikvm﹕ Debugger has detached; object registry had 1 entries
  01-24 18:40:09.814    6099-6099/? I/dalvikvm﹕ Failed resolving Lnet/rymate/notes/storage/GoogleDriveStorage; interface 1582 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  01-24 18:40:09.815    6099-6099/? W/dalvikvm﹕ Link of class 'Lnet/rymate/notes/storage/GoogleDriveStorage;' failed
  01-24 18:40:09.815    6099-6099/? E/dalvikvm﹕ Could not find class 'net.rymate.notes.storage.GoogleDriveStorage', referenced from method net.rymate.notes.activities.NotesListActivity.onCreate
  01-24 18:40:09.815    6099-6099/? W/dalvikvm﹕ VFY: unable to resolve new-instance 1949 (Lnet/rymate/notes/storage/GoogleDriveStorage;) in Lnet/rymate/notes/activities/NotesListActivity;
  01-24 18:40:09.815    6099-6099/? D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0092
  01-24 18:40:09.837    6099-6099/? I/dalvikvm﹕ Failed resolving Lnet/rymate/notes/storage/GoogleDriveStorage; interface 1582 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  01-24 18:40:09.838    6099-6099/? W/dalvikvm﹕ Link of class 'Lnet/rymate/notes/storage/GoogleDriveStorage;' failed
  01-24 18:40:09.839    6099-6099/? D/dalvikvm﹕ DexOpt: unable to opt direct call 0x3162 at 0x94 in Lnet/rymate/notes/activities/NotesListActivity;.onCreate
  01-24 18:40:09.905    1038-8218/? D/dalvikvm﹕ GC_EXPLICIT freed 1503K, 23% free 26687K/34552K, paused 4ms+10ms, total 111ms
  01-24 18:40:09.910    6099-6099/? D/AndroidRuntime﹕ Shutting down VM
  01-24 18:40:09.910    6099-6099/? W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41616d40)
  01-24 18:40:09.912    6099-6099/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
      Process: net.rymate.notes, PID: 6099
      java.lang.NoClassDefFoundError: net.rymate.notes.storage.GoogleDriveStorage
              at net.rymate.notes.activities.NotesListActivity.onCreate(NotesListActivity.java:122)
              at android.app.Activity.performCreate(Activity.java:5248)
              at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173)
              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269)
              at android.app.ActivityThread.access$800(ActivityThread.java:139)
              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
              at android.os.Handler.dispatchMessage(Handler.java:102)
              at android.os.Looper.loop(Looper.java:136)
              at android.app.ActivityThread.main(ActivityThread.java:5102)
              at java.lang.reflect.Method.invokeNative(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:515)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
              at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126)
              at dalvik.system.NativeStart.main(Native Method)
  </code></pre>
  
  <p>This is the source for the problem class (my main activity just creates a new instance of this class, it doesn't do anything with it):</p>
  
  <pre><code>package net.rymate.notes.storage;
  
  import android.app.Activity;
  import android.content.IntentSender.SendIntentException;
  import android.os.Bundle;
  import android.util.Log;
  
  import com.google.android.gms.common.ConnectionResult;
  import com.google.android.gms.common.GooglePlayServicesUtil;
  import com.google.android.gms.common.api.GoogleApiClient;
  import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
  import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
  import com.google.android.gms.drive.Drive;
  
  
  /**
   * Created by Ryan on 24/01/14.
   */
  public class GoogleDriveStorage implements
          ConnectionCallbacks,
          OnConnectionFailedListener {
  
      private static final String TAG = "GoogleDriveStorage";
  
      /**
       * Extra for account name.
       */
      protected static final String EXTRA_ACCOUNT_NAME = "account_name";
  
      /**
       * Request code for auto Google Play Services error resolution.
       */
      protected static final int REQUEST_CODE_RESOLUTION = 1;
  
      /**
       * Next available request code.
       */
      protected static final int NEXT_AVAILABLE_REQUEST_CODE = 2;
      private final Activity activity;
  
      /**
       * Google API client.
       */
      private GoogleApiClient mGoogleApiClient;
  
      public GoogleDriveStorage(Activity a) {
          if (mGoogleApiClient == null) {
              mGoogleApiClient = new GoogleApiClient.Builder(a.getApplication())
                      .addApi(Drive.API)
                      .addScope(Drive.SCOPE_FILE)
                      .addConnectionCallbacks(this)
                      .addOnConnectionFailedListener(this)
                      .build();
          }
          mGoogleApiClient.connect();
  
          this.activity = a;
      }
  
      /**
       * Called when {@code mGoogleApiClient} is connected.
       */
      @Override
      public void onConnected(Bundle connectionHint) {
          Log.i(TAG, "GoogleApiClient connected");
      }
  
      /**
       * Called when {@code mGoogleApiClient} is disconnected.
       */
      @Override
      public void onDisconnected() {
          Log.i(TAG, "GoogleApiClient disconnected");
      }
  
      @Override
      public void onConnectionFailed(ConnectionResult result) {
          Log.i(TAG, "GoogleApiClient connection failed: " + result.toString());
          if (!result.hasResolution()) {
              // show the localized error dialog.
              GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), activity, 0).show();
              return;
          }
          try {
              result.startResolutionForResult(activity, REQUEST_CODE_RESOLUTION);
          } catch (SendIntentException e) {
              Log.e(TAG, "Exception while starting resolution activity", e);
          }
      }
  }
  </code></pre>
  
  <p>And my build.gradle</p>
  
  <pre><code>buildscript {
      repositories {
          mavenCentral()
      }
      dependencies {
          classpath 'com.android.tools.build:gradle:0.6.+'
      }
  }
  apply plugin: 'android'
  
  repositories {
      mavenCentral()
      mavenLocal()
  }
  
  android {
      compileSdkVersion 19
      buildToolsVersion "19.0.0"
  
      defaultConfig {
          minSdkVersion 14
          targetSdkVersion 19
      }
  }
  
  dependencies {
      compile project(':libs:ShowcaseView')
      // Google Play Services
      compile 'com.google.android.gms:play-services:4.1.32'
  }
  </code></pre>
  
  <p>Help will be appreciated!</p>
  
  <p>EDIT: adding manifest.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="net.rymate.notes"
      android:versionCode="7"
      android:versionName="1.3" &gt;
  
      &lt;uses-sdk
          android:minSdkVersion="14"
          android:targetSdkVersion="16" /&gt;
  
      &lt;uses-permission android:name="android.permission.GET_ACCOUNTS"/&gt;
      &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
  
      &lt;application
          android:allowBackup="true"
          android:icon="@drawable/ic_launcher"
          android:label="@string/app_name"
          android:theme="@style/AppTheme" android:hardwareAccelerated="true"&gt;
          &lt;activity android:name="net.rymate.notes.activities.NotesListActivity" &gt;
              &lt;intent-filter&gt;
                  &lt;action android:name="android.intent.action.MAIN" /&gt;
  
                  &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
              &lt;/intent-filter&gt;
          &lt;/activity&gt;
  
          &lt;meta-data
              android:name="com.google.android.gms.version"
              android:value="@integer/google_play_services_version" /&gt;
  
          &lt;activity
              android:name="net.rymate.notes.activities.NoteViewActivity"
              android:configChanges="orientation|keyboardHidden|screenSize"
              android:windowSoftInputMode="adjustResize" /&gt;
          &lt;activity
              android:name="net.rymate.notes.activities.NoteEditActivity"
              android:configChanges="orientation|keyboardHidden|screenSize"
              android:windowSoftInputMode="stateVisible|adjustResize" /&gt;
      &lt;/application&gt;
  
  &lt;/manifest&gt;
  </code></pre>