library google for apis java android google-api google-api-client

for - google finance api java



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

Este es claramente un error de configuración proguard de gms (Servicios de Google Play).

  • O bien es causado por una versión incorrecta contra la que compila, y puede compilar contra otra.
  • O es causado por los Servicios de Play instalados en el dispositivo, y solo puedes esperar que el equipo de Servicios de Play haya dejado de utilizar esta versión hasta que se solucione el error.

Estoy desarrollando una aplicación que usa GoogleAPIClient para (obviamente) obtener la ubicación actual del usuario en segundo plano.

Para esta tarea utilizo IntentService con WakefulBroadcastReceiver (para obtener la ubicación cada hora). Todo funcionaba bien en el entorno de desarrollo, pero cuando se implementa en Play Store, algunos dispositivos obtienen este 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)

Busqué en Internet respuestas pero no encontré nada. Aquí está el punto donde aparece la excepción:

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

¡Muchas gracias!

EDITAR

aplicación 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''

Proyecto raíz build.gradle

// 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

Usando Fabric, ahora puedo ver que todos los usuarios afectados por este problema usan Android 4.x. Tal vez la distribución de los Servicios de Play tenga errores, no lo sé. Pero está disminuyendo la cantidad de dispositivos con este error.


¡FINALMENTE! Pasé literalmente varias horas tratando de resolver este problema, tal vez ya se haya resuelto, pero resulta que cualquiera de las clases de Google que utiliza tiene que ser la MISMA VERSIÓN en el gradle, es decir,

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

Estaba llamando a dos versiones diferentes. Una vez lo llegué a esto:

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

el classdeferror fue resuelto!


Te estás poniendo

Excepción fatal: java.lang.NoClassDefFoundError: com / google / android / gms / internal / zzsa en com.google.android.gms.common.api.GoogleApiClient $ Builder. (Fuente desconocida)

NoClassDefFoundError en Java se produce cuando Java Virtual Machine no puede encontrar una clase particular en tiempo de ejecución que estuvo disponible durante el tiempo de compilación.

ANTIGUO

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 se usa con una variedad de métodos estáticos. Algunos de estos métodos requieren que GoogleApiClient esté conectado, algunos pondrán en cola las llamadas antes de que GoogleApiClient se conecte;

mGoogleApiClient = new GoogleApiClient.Builder(this)

Deberías probar con tu build.gradle

Archivo de compilación de nivel superior donde puede agregar opciones de configuración comunes a todos los subproyectos / módulos.

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() } }

Consejo que puedes llamar

  1. compile ''com.android.support:appcompat-v7:23.1.1'' lugar de v7:23+

Luego Clean-Rebuild-Restart-Sync Your Project Espero que esto ayude.

Editar

El sistema de compilación de Android consiste en un complemento de Android para Gradle. Gradle es un kit de herramientas de compilación avanzado que gestiona las dependencias y le permite definir una lógica de compilación personalizada. Android Studio utiliza un contenedor Gradle para integrar completamente el complemento de Android para Gradle. El complemento de Android para Gradle también se ejecuta independientemente de Android Studio.

Un complemento es simplemente cualquier clase que implementa la interfaz del complemento. Gradle proporciona los complementos principales como parte de su distribución, por lo que basta con aplicar el complemento como se indica arriba.

con beta2 y alpha-5 gradle no muestran error. Pero sin "apply plugin: ''services''" y ''classpath'' no se genera gcm_defaultSenderId para GCM

Puede verificar Obtener una ID de instancia

Deberías usar el complemento apply .