15

Ho recentemente introdotto Google TagManager nella mia app per Android per apportare modifiche alla configurazione dell'app senza dover ridistribuire l'app.Come evitare TagManager "IllegalStateException: i risultati sono già stati impostati"

Ma io sono sempre le istanze di:

java.lang.IllegalStateException: Results have already been set 
at com.google.android.gms.common.internal.p.a(Unknown Source) 
at com.google.android.gms.common.api.b$a.a(Unknown Source) 
at com.google.android.gms.tagmanager.ed.a(Unknown Source) 
at com.google.android.gms.tagmanager.ed.a(Unknown Source) 
at com.google.android.gms.tagmanager.ed$b.a(Unknown Source) 
at com.google.android.gms.tagmanager.ed$b.a(Unknown Source) 
at com.google.android.gms.tagmanager.cj.c(Unknown Source) 
at com.google.android.gms.tagmanager.ck.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
at java.lang.Thread.run(Thread.java:841) 

Si verificano attraverso una varietà di dispositivi da Android 4.4 a 5.0.1

Come si può vedere non v'è alcun elemento della mia app in stacktrace , e sono davvero in perdita e per quello che posso fare (oltre a rimuovere TagManager) per evitare o mitigare l'errore.

Ho trovato un riferimento allo stesso messaggio di errore associato all'account di accesso di GooglePlus, quindi penso che potrebbe riguardare la libreria dei servizi di Google Play.

Qualcun altro l'ha visto? Qualche idea?

hanno sollevato questione con il progetto Play-Games: https://code.google.com/p/play-games-platform/issues/detail?id=209

+0

Hai provato a scaricare TagManager SDK e decompila tutto + grep a "I risultati sono stati it già impostato "? Questo spiegherà esattamente quando viene generato questo errore, ti condurrà alla fine a una soluzione. –

+1

Quale versione di Google Play Services stai utilizzando? Hai visto gli ultimi documenti, aggiornati il ​​18 dicembre? https://developers.google.com/tag-manager/android/v4/ –

+0

@JaredBurrows 6.1.71 e sì, grazie. – William

risposta

4

Questo è un bug interno a causa di una condizione di competizione all'interno TagManager e devono essere fissati in Google Play Services 6.7 (17 febbraio 2015).

Vedi https://productforums.google.com/forum/?utm_medium=email&utm_source=footer#!msg/tag-manager/NOlng117_2g/w46OkQS5Gm8J e anche https://developers.google.com/analytics/devguides/collection/android/changelog

Nel frattempo si può lavorare intorno ad esso da:

private static class MyHandler implements Thread.UncaughtExceptionHandler { 

    private final Thread.UncaughtExceptionHandler defaultHandler; 

    MyHandler(Thread.UncaughtExceptionHandler defaultHandler) { 
     this.defaultHandler = defaultHandler; 
    } 

    @Override 
    public void uncaughtException(Thread thread, Throwable ex) { 
     String classpath = null; 
     if (ex != null && ex.getStackTrace().length > 0) { 
      classpath = ex.getStackTrace()[0].toString(); 
     } 
     if (classpath != null && 
      ex.getMessage().contains("Results have already been set") && 
      classpath.contains("com.google.android.gms.tagmanager")) { 
      // ignore 
     } else { 
      // run your default handler 
      defaultHandler.uncaughtException(thread, ex); 
     } 
    } 
}; 

// Application#onCreate 
public void onCreate() { 
    // for catching app global unhandled exceptions 
    final Thread.UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler(); 
    Thread.setDefaultUncaughtExceptionHandler(new MyHandler(defaultHandler)); 
} 
Problemi correlati