2015-04-24 12 views
18

Si verifica uno strano arresto anomalo e non riesco a trovare nulla a riguardo su Google. Ricerca ZoomTableManager non restituisce alcun risultato.ECCEZIONE FATALE: ZoomTableManager

E/AndroidRuntime﹕ FATAL EXCEPTION: ZoomTableManager 
Process: com.xxx.yyy, PID: 22129 
java.lang.IllegalMonitorStateException: object not locked by thread before notify() 
     at java.lang.Object.notifyAll(Native Method) 
     at com.google.maps.api.android.lib6.gmm6.m.k.a(Unknown Source) 
     at com.google.maps.api.android.lib6.gmm6.m.l.run(Unknown Source) 
+0

sto ricevendo lo stesso errore pure. L'utilizzo di compilazione 'com.google.android.gms: play-services: 4.2.42' è in qualche modo correlato? – Eric

+0

Anche io sto ottenendo lo stesso errore. –

+0

Sto ricevendo lo stesso errore dopo aver chiamato la stessa pagina 4 volte su cui sto usando google map. –

risposta

21

Si è scoperto che la causa dell'errore era un chiave API di Google Maps non valida.

Recentemente abbiamo dovuto cambiare il nome del pacchetto dell'app e quindi le chiavi API che abbiamo utilizzato sono diventate non valide in quanto è necessario specificare le app consentite per firma e nome del pacchetto.

+1

Ma ho una chiave API Google Maps valida. e succede ancora? per favore aiutatemi –

+0

Questo è un comportamento molto strano. Stavo usando la chiave API di Google Map non valida dagli ultimi 2 mesi in cui non si verificava l'arresto anomalo dell'app, ma ora cambio semplicemente il flusso di applicazioni bit utilizzando la chiave API di Google Map non valida. Inizia l'app in crash. E ora ho dato di nuovo la chiave API valida e funzionava correttamente. –

+0

Sì, con le librerie correnti del play store, il crash si verifica quando si utilizza una chiave non valida. Nessun arresto anomalo dopo l'aggiunta dell'autent corretta. – andreimarinescu

1

Un IllegalMonitorStateException con quel messaggio accade quando si chiama obj.notify() e non state tenendo il mutex primitivo per obj.

si suppone di fare qualcosa di simile:

synchronized (someObj) { 
     ... 
     someObj.notify(); 
     ... 
    } 

o equivalente, ma per alcuni motivi il codice che causa il problema ha lasciato fuori la punta synchronized. (O forse, si è sincronizzato su un oggetto diverso.)

Sfortunatamente, questo sta accadendo in qualche codice offuscato che fornisce l'implementazione dell'API di Google Maps. E non hai fornito alcun contesto. Quindi è quasi impossibile per noi anche indovinare cosa sta succedendo.

Suggerisco di fornire maggiori dettagli.

0

Il modo per risolvere questo problema è applicare la chiave pubblica della mappa di google per il pacchetto.

Ma il modo per evitare questo incidente è quello di verificare il valore di ritorno del chiamante mapFragment = new MapFragment() e non chiamare fm.beginTransaction().replace(id, mapFragment).commit(); se il mapFragment è nullo.

Spero che aiuti.

0

Nel nostro caso, ciò che è cambiato è stata la chiave utilizzata per firmare l'applicazione Android (e non la chiave API). Prima di utilizzare una chiave di produzione (memorizzata in un keystore). Quella chiave di produzione è stata abilitata in Google API Console (https://console.developers.google.com).

Abbiamo installato un nuovo ambiente di sviluppo in una nuova macchina e quella macchina non utilizzava la chiave di produzione come prima, ma utilizzava la chiave di debug predefinita di Android (memorizzata nel keystore di debug predefinito di Android in $ HOME/.android/debug .keystore).

La soluzione era impostare la chiave di debug predefinita di Android, SHA1 e il nome del pacchetto in Google API Console.

  1. Prendi lo SHA1:

    keytool -list -v -keystore $ HOME/.android/debug.chiavi

  2. copia SHA1: 27: 4C: CF: A3: E9: 75: 4A: 59: 4C: EE: 50: 21: 2B: 1C: 7B: 48: FC: 45: 4F: 77

  3. Vai alle API Console di Google e inserire lo SHA1; nome del pacchetto (in API & Auth> Credenziali> Modifica consentito applicazioni Android):

27: 4C: CF: A3: E9: 75: 4A: 59: 4C: EE: 50: 21: 2B: 1C: 7B: 48: FC: 45: 4F: 77; com.mypackage.name

Divertiti!

Problemi correlati