Android GoogleAPIClient - NoClassDefFoundError: com / google / android / gms / internal / zzsa

I am developing an application that uses GoogleAPIClient to (obviously) get the user's current location in the background.

For this task I use IntentService with WakefulBroadcastReceiver (to get location every hour). Everything worked fine in the development environment, but when deploying to the Play Store, some devices get this error:

Fatal Exception: java.lang.NoClassDefFoundError: com/google/android/gms/internal/zzsa at com.google.android.gms.common.api.GoogleApiClient$Builder.<init>(Unknown Source) at tellerina.com.br.vivara.services.MyService.onHandleIntent(MyService.java:37) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:157) at android.os.HandlerThread.run(HandlerThread.java:61) 

I searched the Internet for answers but found nothing. Here is the point at which the exception appears:

 mGoogleApiClient = new GoogleApiClient.Builder(MyApplication.getContext()) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); 

Thank you so much!

EDIT

app build.gradle

 buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.21.2' } } apply plugin: 'com.android.application' apply plugin: 'io.fabric' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "app.package" minSdkVersion 14 targetSdkVersion 22 versionCode 9 versionName "1.5.2" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } dexOptions { javaMaxHeapSize "4g" } } repositories { mavenCentral() maven { url 'https://maven.fabric.io/public' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile fileTree(dir: 'libs', include: ['*.so']) compile(project(':volley')) { exclude module: 'support-v4' } compile files('libs/commons-codec-1.9.jar') compile('com.navercorp.volleyextensions:volley-views:2.0.+') { exclude module: 'library' } compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') { transitive = true; } compile 'com.android.support:appcompat-v7:23+' compile 'com.android.support:cardview-v7:23+' compile 'com.android.support:recyclerview-v7:23+' compile 'com.google.code.gson:gson:2.3.1' compile 'io.card:android-sdk:5.1.1' compile 'com.github.ksoichiro:androidpagecontrol:0.1.1' compile 'me.relex:circleindicator:1.1.5@aar' compile 'com.nineoldandroids:library:2.4.0' compile 'com.daimajia.easing:library:1.0.1@aar' compile 'com.daimajia.androidanimations:library:1.1.3@aar' compile 'com.facebook.android:facebook-android-sdk:4.5.0' compile 'br.com.jansenfelipe:androidmask:1.0.1' compile 'com.google.android.gms:play-services:8.4.0' compile 'com.android.support:multidex:1.0.0' compile 'com.android.support:design:23+' compile 'com.squareup.picasso:picasso:2.5.2' } apply plugin: 'com.google.gms.google-services' 

Root build.gradle project

 // 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' classpath 'com.google.gms:google-services:+' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } 

EDIT 2

Using Fabric, now I see that all users affected by this issue are using Android 4.x. Perhaps the distribution of the Services is tapped, I don’t know. But this reduces the number of devices with this error.

+8
java android google-api google-api-client
source share
3 answers

You get

Fatal Exception: java.lang.NoClassDefFoundError: COM / Google / Android / GMS / internal / zzsa on com.google.android.gms.common.api.GoogleApiClient $ Builder. (Unknown Source)

NoClassDefFoundError in Java occurs when the Java Virtual Machine cannot find a specific class at runtime that was available at compile time.

OLD

  dependencies { // classpath 'com.android.tools.build:gradle:1.5.0' // classpath 'com.google.gms:google-services:+' //(Avoid Calling "+") // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } 

GoogleApiClient is used with various static methods. Some of these methods require connecting GoogleApiClient, some of them will call the queue before connecting GoogleApiClient;

 mGoogleApiClient = new GoogleApiClient.Builder(this) 

You should try your build.gradle

A top-level assembly file in which you can add configuration parameters common to all subprojects / modules.

  buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.0.0-beta2' classpath 'com.google.gms:google-services:2.0.0-beta2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } 

Tip you can call

  • compile 'com.android.support:appcompat-v7:23.1.1' instead of v7:23+

Then Clean-Rebuild-Restart-Sync Your Project . Hope this helps.

Edit

The Android build system consists of an Android plugin for Gradle. Gradle is an advanced build toolkit that manages dependencies and allows you to define custom build logic. Android Studio uses Gradle to fully integrate the Android plugin for Gradle. The Android plugin for Gradle also works independently of Android Studio.

A plugin is just any class that implements the Plugin interface. Gradle provides the main plugins as part of its distribution, so just using the plugin as above is all you need to do.

with beta2 and alpha-5 gradle do not show an error. But without using the plugin: "services" and "classpath" it is not generated by gcm_defaultSenderId for GCM

You can check Get Instance ID

You must use the apply plugin .

+2
source share

This is clearly a progard gms (Google Play Services) configuration error.

  • Or it is caused by the wrong version with which you are creating, and you can create it against another.
  • Or it’s caused by the Playback Service installed on the device, and you can only hope that the Services team will stop routing this version until the error is fixed.
0
source share

FINALLY! I spent literally several hours trying to solve this problem, maybe it has already been solved, but as it turned out, any of the google classes that you use should be ONLY VERSIONS in gradle, i.e.

  compile 'com.google.android.gms:play-services-identity:7.8.0' compile 'com.google.android.gms:play-services-location:7.5.0' 

I called two different versions. Somehow I realized this:

  compile 'com.google.android.gms:play-services-identity:7.8.0' compile 'com.google.android.gms:play-services-location:7.8.0' 

class definition allowed!

0
source share

All Articles