2015-06-30 1 views
15

Nachdem wir Google Play-Dienste aktualisiert:Google Analytics Probleme nach Play-Dienste ein Upgrade auf 7.5

compile 'com.google.android.gms:play-services-base:7.5.0' 
compile 'com.google.android.gms:play-services-analytics:7.5.0' 

Beachten Sie, dass docs sagen wir Play-Dienste-Analysen verwenden: 7.3.0, aber da wir Mit den Play Services 7.5 haben wir die zu Beginn angegebenen Konfigurationen verwendet.

Die App ist in Ordnung, aber wir haben festgestellt, dass Google Analytics nicht mehr an unseren Server gesendet wird. Und auch wenn wir machen rufen Tracker.send() die folgenden Zeilen in dem Fehlerprotokoll pro Ereignis erscheint:

06-30 10:51:43.188 13623-13752/com.fairfax.domain E/SQLiteLog﹕ (1032) statement aborts at 31: [INSERT OR REPLACE INTO properties(cid,app_uid,hits_count,adid,params,tid) VALUES (?,?,?,?,?,?)] 
06-30 10:51:43.198 13623-13752/com.fairfax.domain E/GAv4﹕ Error storing a property: android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032) 
06-30 10:51:44.348 13623-13752/com.fairfax.domain E/SQLiteLog﹕ (1032) statement aborts at 31: [INSERT OR REPLACE INTO properties(cid,app_uid,hits_count,adid,params,tid) VALUES (?,?,?,?,?,?)] 
06-30 10:51:44.358 13623-13752/com.fairfax.domain E/GAv4﹕ Error storing a property: android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032) 
06-3 

Wir proxied den Verkehr und sah, dass in der Tat es schien nicht die GA Ereignisse zu senden.

Als Abhilfe für jetzt haben wir die Änderung manuelle Disposition:

analytics.setLocalDispatchPeriod(0); 

und manuell aufrufen:

GoogleAnalytics.getInstance(appContext).dispatchLocalHits(); 

Aber das ist natürlich nicht ideal, wie würden wir lassen Google Analytics Handle speichern/senden basierend auf Konfigurationen und nicht erhalten die Fehler?

UPD: Es ist wahrscheinlich erwähnenswert, dass wir von Play Services 6.5 upgraden.

UPD2: Wir haben das Netzwerk erneut proxisiert und jetzt scheint es, dass GA nach einiger Zeit eine Batch-Anfrage sendet. Diese SQLite-Fehler sind jedoch immer noch vorhanden:

8273-8329/com.fairfax.domain E/SQLiteLog﹕ (1032) statement aborts at 29: [INSERT OR REPLACE INTO properties(cid,app_uid,hits_count,adid,params,tid) VALUES (?,?,?,?,?,?)] 
+0

Wenn es funktioniert, bevor Sie Nähte merkwürdig verbessert haben, funktioniert es nach dem Upgrade nicht. Ich kann nicht mit Android helfen, aber ich habe dem Analytics SDK-Team eine E-Mail geschickt, die nur seinen Fehler enthält. – DaImTo

+0

@DaImTo diese SQLite-Fehler scheinen nach dem Neustart des Geräts verschwinden. Alles funktioniert danach wie erwartet. Allerdings zögern wir immer noch, einen Build mit 7,5 Play-Diensten zu veröffentlichen, da wir nicht erwarten können, dass Benutzer ihre Geräte häufig neu starten. –

+0

Haben Sie eine Lösung dafür gefunden? –

Antwort

0

Ist SQLiteLog eine Klasse, die Sie geschrieben haben oder die Google Analytics bereitstellt? Wenn Sie einen DBHelper verwenden, können Sie getWorthDatabase() darauf anwenden.

Haben Sie lange laufende Dienste, die möglicherweise die alte Datenbank verwenden oder eine Sperre haben?

Sie könnten auch versuchen, Ihre Build-Nummer in der App zu stoßen und in eine SQL-Migration zu schauen.