Ich entwickle eine App, die GoogleAPIClient verwendet, um (offensichtlich) den aktuellen Standort des Benutzers im Hintergrund zu finden.
Für diese Aufgabe verwende ich IntentService mit WakefulBroadcastReceiver (um den Standort jede Stunde zu bekommen). Alles funktionierte gut in der Entwicklungsumgebung, aber bei der Bereitstellung im Play Store erhalten einige Geräte diesen Fehler:
%Vor%Ich habe im Internet nach Antworten gesucht, aber ich habe nichts gefunden. Hier ist der Punkt, an dem die Ausnahme auftritt:
%Vor%Vielen Dank!
BEARBEITEN
App build.gradle
%Vor%Stammprojekt build.gradle
%Vor%BEARBEITEN 2
Mit Fabric kann ich jetzt sehen, dass alle Benutzer, die von diesem Problem betroffen sind, Android 4.x verwenden. Vielleicht ist die Verteilung von Play-Services fehlerhaft, ich weiß es nicht. Aber es verringert die Anzahl der Geräte mit diesem Fehler.
Sie erhalten
Schwerwiegende Ausnahme: java.lang.NoClassDefFoundError: com / google / android / gms / intern / zzsa unter com.google.android.gms.common.api.GoogleApiClient $ Builder. (Unbekannt Quelle)
NoClassDefFoundError in Java kommt Wenn Java Virtual Machine zur Laufzeit keine bestimmte Klasse finden kann, die während der Kompilierungszeit verfügbar war.
OLD
%Vor%%Vor%GoogleApiClient wird mit einer Vielzahl von statischen Methoden verwendet. Einige Diese Methoden erfordern, dass GoogleApiClient verbunden wird, einige werden Anrufe anstehen, bevor GoogleApiClient verbunden ist;
Sie sollten es mit Ihrem build.gradle
%Vor%Datei der obersten Ebene, auf der Sie Konfigurationsoptionen hinzufügen können, die häufig verwendet werden alle Unterprojekte / Module.
Hinweis Sie können
anrufencompile 'com.android.support:appcompat-v7:23.1.1'
anstelle von
%Code%
Dann v7:23+
.Hope das hilft.
Bearbeiten
Das Android-Build-System besteht aus einem Android-Plugin für Gradle. Gradle ist ein erweitertes Build-Toolkit, das Abhängigkeiten verwaltet und verwaltet ermöglicht es Ihnen, benutzerdefinierte Build-Logik zu definieren. Android Studio verwendet eine Gradle Wrapper, um das Android-Plugin für Gradle vollständig zu integrieren. Das Android Plugin für Gradle läuft auch unabhängig von Android Studio.
Ein Plugin ist einfach jede Klasse, die die Plugin-Schnittstelle implementiert. Gradle stellt die Kern-Plugins als Teil seiner Distribution zur Verfügung, so dass Sie einfach das Plugin wie oben beschrieben anwenden müssen.
mit beta2 und alpha-5 Gradle zeigen keinen Fehler. Aber ohne "bewerben" plugin: 'services' "und 'classpath' wird nicht generiert gcm_defaultSenderId für GCM
Sie können Abrufen einer Instanz-ID <überprüfen / p>
Sie sollten Plugin anwenden verwenden.
Dies ist eindeutig ein Fehler bei der Progard-Konfiguration von gms (Google Play Services).
ENDLICH! Ich habe wörtlich mehrere Stunden damit verbracht, dieses Problem zu lösen, vielleicht ist es bereits gelöst worden, aber es stellt sich heraus, dass jede der von Ihnen verwendeten Google-Klassen die gleiche Version in der Größe sein muss, d. H.
%Vor%Ich habe zwei verschiedene Versionen angerufen. Einmal habe ich es zufällig dazu gemacht:
%Vor%Der Klassenfehler wurde behoben!
Tags und Links java android google-api google-api-client