Search code examples
androidandroid-studiobuild.gradlesmack

Could not find provider class SMACK 4.1.1 Android


I'm new to android development and Smack and using a sample code from link. But when I tried to use smack 4.1.1 api I am getting class not found errors when running the app on API Level below 22.

Below is the part of the code where I am getting the error:

    XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration
            .builder(); // In this line 
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
    config.setServiceName(serverAddress);
    config.setHost(serverAddress);
    config.setPort(5222);
    config.setDebuggerEnabled(true);
    XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);
    XMPPTCPConnection.setUseStreamManagementDefault(true);
    connection = new XMPPTCPConnection(config.build());
    XMPPConnectionListener connectionListener = new XMPPConnectionListener();
    connection.addConnectionListener(connectionListener);

Here is my gradle file dependencies list:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.github.bumptech.glide:glide:3.6.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'org.jxmpp:jxmpp-util-cache:0.5.0-alpha7'
compile 'org.igniterealtime.smack:smack-android:4.1.1'
compile 'org.igniterealtime.smack:smack-tcp:4.1.1'
// optional features
compile 'org.igniterealtime.smack:smack-android-extensions:4.1.1'
compile 'org.igniterealtime.smack:smack-core:4.1.1'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.google.android.gms:play-services:8.3.0'
}

Below is the error I am getting:

    12-04 13:52:14.782 7566-7582/com.society.societytabs E/GMPM: getGoogleAppId failed with status: 10
12-04 13:52:14.784 7566-7582/com.society.societytabs E/GMPM: Uploading is not possible. App measurement disabled
12-04 13:52:15.812 7566-7566/com.society.societytabs E/dalvikvm: Could not find class 'org.jxmpp.util.cache.ExpirationCache', referenced from method org.jivesoftware.smack.util.dns.minidns.MiniDnsResolver.<clinit>
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader: Could not find provider class
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader: java.lang.ClassNotFoundException: Didn't find class "org.jivesoftware.smackx.time.provider.TimeProvider" on path: DexPathList[[zip file "/data/app/com.society.societytabs-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.society.societytabs-1, /vendor/lib, /system/lib]]
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.provider.ProviderFileLoader.<init>(ProviderFileLoader.java:77)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.initializer.UrlInitializer.initialize(UrlInitializer.java:53)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:232)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:193)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:163)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:148)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:116)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackConfiguration.getVersion(SmackConfiguration.java:96)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:38)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.initialiseConnection(MyXMPP.java:102)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.init(MyXMPP.java:95)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.<init>(MyXMPP.java:61)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.getInstance(MyXMPP.java:69)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyService.onCreate(MyService.java:34)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2585)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.access$1800(ActivityThread.java:139)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.os.Handler.dispatchMessage(Handler.java:102)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.os.Looper.loop(Looper.java:136)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.main(ActivityThread.java:5086)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.reflect.Method.invokeNative(Native Method)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.reflect.Method.invoke(Method.java:515)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
12-04 13:52:15.825 7566-7566/com.society.societytabs E/ProviderFileLoader:     at dalvik.system.NativeStart.main(Native Method)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader: Could not find provider class
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader: java.lang.ClassNotFoundException: Didn't find class "org.jivesoftware.smackx.xhtmlim.provider.XHTMLExtensionProvider" on path: DexPathList[[zip file "/data/app/com.society.societytabs-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.society.societytabs-1, /vendor/lib, /system/lib]]
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.provider.ProviderFileLoader.<init>(ProviderFileLoader.java:77)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.initializer.UrlInitializer.initialize(UrlInitializer.java:53)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:232)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:193)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:163)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:148)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:116)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackConfiguration.getVersion(SmackConfiguration.java:96)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:38)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.initialiseConnection(MyXMPP.java:102)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.init(MyXMPP.java:95)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.<init>(MyXMPP.java:61)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.getInstance(MyXMPP.java:69)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyService.onCreate(MyService.java:34)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2585)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.access$1800(ActivityThread.java:139)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.os.Handler.dispatchMessage(Handler.java:102)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.os.Looper.loop(Looper.java:136)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.main(ActivityThread.java:5086)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.reflect.Method.invokeNative(Native Method)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.reflect.Method.invoke(Method.java:515)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
12-04 13:52:15.828 7566-7566/com.society.societytabs E/ProviderFileLoader:     at dalvik.system.NativeStart.main(Native Method)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader: Could not find provider class
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader: java.lang.ClassNotFoundException: Didn't find class "org.jivesoftware.smackx.muc.packet.GroupChatInvitation$Provider" on path: DexPathList[[zip file "/data/app/com.society.societytabs-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.society.societytabs-1, /vendor/lib, /system/lib]]
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.provider.ProviderFileLoader.<init>(ProviderFileLoader.java:77)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.initializer.UrlInitializer.initialize(UrlInitializer.java:53)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:232)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:193)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:163)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:148)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:116)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackConfiguration.getVersion(SmackConfiguration.java:96)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:38)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.initialiseConnection(MyXMPP.java:102)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.init(MyXMPP.java:95)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.<init>(MyXMPP.java:61)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.getInstance(MyXMPP.java:69)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyService.onCreate(MyService.java:34)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2585)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.access$1800(ActivityThread.java:139)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.os.Handler.dispatchMessage(Handler.java:102)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.os.Looper.loop(Looper.java:136)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.main(ActivityThread.java:5086)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.reflect.Method.invokeNative(Native Method)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.reflect.Method.invoke(Method.java:515)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
12-04 13:52:15.830 7566-7566/com.society.societytabs E/ProviderFileLoader:     at dalvik.system.NativeStart.main(Native Method)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader: Could not find provider class
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader: java.lang.ClassNotFoundException: Didn't find class "org.jivesoftware.smackx.xdata.provider.DataFormProvider" on path: DexPathList[[zip file "/data/app/com.society.societytabs-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.society.societytabs-1, /vendor/lib, /system/lib]]
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.provider.ProviderFileLoader.<init>(ProviderFileLoader.java:77)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.initializer.UrlInitializer.initialize(UrlInitializer.java:53)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:232)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:193)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:163)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:148)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:116)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.SmackConfiguration.getVersion(SmackConfiguration.java:96)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:38)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.initialiseConnection(MyXMPP.java:102)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.init(MyXMPP.java:95)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.<init>(MyXMPP.java:61)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyXMPP.getInstance(MyXMPP.java:69)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.society.societytabs.Application.MyService.onCreate(MyService.java:34)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2585)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.access$1800(ActivityThread.java:139)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.os.Handler.dispatchMessage(Handler.java:102)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.os.Looper.loop(Looper.java:136)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at android.app.ActivityThread.main(ActivityThread.java:5086)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.reflect.Method.invokeNative(Native Method)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at java.lang.reflect.Method.invoke(Method.java:515)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
12-04 13:52:15.833 7566-7566/com.society.societytabs E/ProviderFileLoader:     at dalvik.system.NativeStart.main(Native Method)

Edit 1: After checking for about 8-10 hours, I figured out that the problem is with Smack Extension Library. Could you please help me out resolving that.


Solution

  • Finally I solved the problem. Posting the solution to help anyone who is also having the same issue. There is an issue with smack extension libraries. If use them with google play services library, If will throw errors on devices with KITKAT (api 19) or below devices. To get the code running, replace

    compile 'com.google.android.gms:play-services:8.3.0'
    

    with the libraries you're going to use from play services. In my case I needed play and gcm libraries. below is the code for them:

    compile 'com.google.android.gms:play-services-gcm:8.3.0'
    compile 'com.google.android.gms:play-services-plus:8.3.0'
    

    Here is a full list on google play services libraries: https://developers.google.com/android/guides/setup