title: Class not found in aar
body: <p>I'm getting class not found exception in my Android library (aar) when GoogleApiAvailability is called.</p>
  
  <pre><code>    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.GoogleApiAvailability" on path: DexPathList[[zip file "/data/app/com.myunityplugin.PushNotifications-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myunityplugin.PushNotifications-1/lib/arm, /vendor/lib, /system/lib]]
  </code></pre>
  
  <p>The error is self-explanatory, but I'm not sure what I'm doing wrong. I'm pretty new to gradle and AndroidStudio.</p>
  
  <p>I have the following under dependencies within my gradle.build:</p>
  
  <pre><code>    compile 'com.google.android.gms:play-services:8.4.0'
      compile 'com.google.android.gms:play-services-gcm:8.4.0'
  </code></pre>
  
  <p>I think the problem is that the play-services library needs to be included in the aar, and compile doesn't do that. I tried using 'runtime' but I get "gradle dsl runtime not found".</p>
  
  <p><strong>Questions:</strong></p>
  
  <ol>
  <li>Is this an issue where I need to include the play-services library in my aar, and how do I accomplish that? (if not, how do I address this problem)</li>
  <li>Do I need to specify play-services or does play-services-gcm suffice?</li>
  </ol>
  
  <h2>Error Info / Setup</h2>
  
  <p><strong>Line causing the error</strong></p>
  
  <pre><code>GoogleApiAvailability ServiceAvailability = GoogleApiAvailability.getInstance();
  </code></pre>
  
  <p><strong>Exception:</strong></p>
  
  <pre><code>05-23 05:38:48.221 28055-28055/? E/AndroidRuntime: FATAL EXCEPTION: main
  Process: com.myunityplugin.PushNotifications, PID: 28055
  java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/GoogleApiAvailability;
     at com.myplugin.unitynotification.GCM.GCM.checkPlayServices(GCM.java:33)
     at com.myplugin.unitynotification.GCM.MainActivity.onCreate(MainActivity.java:80)
     at android.app.Activity.performCreate(Activity.java:6550)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3108)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3263)
     at android.app.ActivityThread.access$1000(ActivityThread.java:197)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1687)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:145)
     at android.app.ActivityThread.main(ActivityThread.java:6897)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
  Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.GoogleApiAvailability" on path: DexPathList[[zip file "/data/app/com.myunityplugin.PushNotifications-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myunityplugin.PushNotifications-1/lib/arm, /vendor/lib, /system/lib]]
     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
     at com.myplugin.unitynotification.GCM.GCM.checkPlayServices(GCM.java:33) 
     at com.myplugin.unitynotification.GCM.MainActivity.onCreate(MainActivity.java:80) 
     at android.app.Activity.performCreate(Activity.java:6550) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3108) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3263) 
     at android.app.ActivityThread.access$1000(ActivityThread.java:197) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1687) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:145) 
     at android.app.ActivityThread.main(ActivityThread.java:6897) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
      Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.common.GoogleApiAvailability
     at java.lang.Class.classForName(Native Method)
     at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
     at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
          ... 16 more
  Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
  </code></pre>
  
  <p><strong>App Level build.gradle</strong></p>
  
  <pre><code>apply plugin: 'com.android.library'
  
  android {
      compileSdkVersion 23
      buildToolsVersion "23.0.2"
  
      defaultConfig {
          minSdkVersion 19
          targetSdkVersion 23
          versionCode 1
          versionName "1.0"
      }
      buildTypes {
          release {
              minifyEnabled false
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
  }
  
  dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar'])
      testCompile 'junit:junit:4.12'
      compile 'com.android.support:appcompat-v7:23.2.1'
      compile 'com.google.android.gms:play-services:8.4.0'
      compile 'com.google.android.gms:play-services-gcm:8.4.0'
      provided files('lib-not-include/classes.jar')
  }
  </code></pre>
  
  <p><strong>Project level gradle.build</strong></p>
  
  <pre><code>// Top-level build file where you can add configuration options common to all sub-projects/modules.
  
  buildscript {
      repositories {
          jcenter()
      }
      dependencies {
          classpath 'com.android.tools.build:gradle:1.5.0'
  
          // NOTE: Do not place your application dependencies here; they belong
          // in the individual module build.gradle files
      }
  }
  
  allprojects {
      repositories {
          jcenter()
      }
  }
  
  task clean(type: Delete) {
      delete rootProject.buildDir
  }
  </code></pre>