2016-05-21 14 views
14

aggiornato un app in fase di sviluppo a 9.0.0 con questi cambiamenti e di una rigenerazione di google-services.json:dopo l'aggiornamento a Google Play Services 9.0.0, App si blocca in DynamiteModulesC

classpath 'com.google.gms:google-services:3.0.0' 
compile 'com.google.android.gms:play-services:9.0.0' 

Dopo l'aggiornamento, quando l'applicazione inizializza, appare la sequenza prevista di messaggi logcat. Dopo circa 7 secondi, viene nuovamente emessa la stessa sequenza di messaggi con l'intestazione aggiuntiva background_crash. Ad esempio:

17:39:30.162 5453-5453/com.xxx.nub:background_crash I/MultiDex: install done 

L'app funziona normalmente fino a quando non viene nascosta, ad esempio avviando un'attività in un'altra app. Dopo 5 secondi il sistema rileva che l'applicazione è appeso:

05-20 17:40:10.315 5138-5138/com.xxx.nub I/MainActivity: STOP MainActivity 
05-20 17:40:10.375 5138-5138/com.xxx.nub I/NubApplication: onTrimMemory(): TRIM_MEMORY_UI_HIDDEN 
05-20 17:40:10.375 5138-5138/com.xxx.nub D/FirebaseApp: Notifying background state change listeners. 
05-20 17:45:10.465 5138-5143/com.xxx.nub I/dalvikvm: threadid=3: reacting to signal 3 
05-20 17:45:10.565 5138-5143/com.xxx.nub I/dalvikvm: Wrote stack traces to '/data/anr/traces.txt' 

L'analisi dello stack mostra l'applicazione è appeso in com.google.android.gms.DynamiteModulesC

----- pid 5138 at 2016-05-20 17:45:10 ----- 
Cmd line: com.xxx.nub 

JNI: CheckJNI is off; workarounds are off; pins=0; globals=295 

DALVIK THREADS: 
(mutexes: tll=0 tsl=0 tscl=0 ghl=0) 

"main" prio=5 tid=1 WAIT 
    | group="main" sCount=1 dsCount=0 obj=0x416c5ea0 self=0x415bb5d0 
    | sysTid=5138 nice=-11 sched=0/0 cgrp=apps handle=1073844564 
    | state=S schedstat=(0 0 0) utm=1774 stm=244 core=1 
    at java.lang.Object.wait(Native Method) 
    - waiting on <0x42804a68> (a aaf) 
    at java.lang.Object.wait(Object.java:364) 
    at aaf.a(:com.google.android.gms.DynamiteModulesC:75) 
    at zq.onTrimMemory(:com.google.android.gms.DynamiteModulesC:1187) 
    at android.app.Application.onTrimMemory(Application.java:148) 
    at com.xxx.nub.NubApplication.onTrimMemory(NubApplication.java:211) 
    at android.app.ActivityThread.handleTrimMemory(ActivityThread.java:4298) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1481) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:146) 
    at android.app.ActivityThread.main(ActivityThread.java:5487) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
    at dalvik.system.NativeStart.main(Native Method) 

Il problema si verifica su un telefono con KitKat. Il problema è non si verificano su un telefono che esegue Lollipop.

L'output logcat completo può essere visualizzato here.

risposta

24

Il processo background_crash viene creato da Firebase Crash Reporting. Ecco perché stai vedendo i messaggi duplicati, ma non penso che sia la causa principale qui. Ho intenzione di archiviare il blocco come problema a monte con il team di Google Play Services, ma probabilmente c'è una soluzione temporanea che puoi utilizzare nel frattempo:

Perché stai specificando com.google.android.gms:play-services:9.0.0 come dipendenza che stai portando in letteralmente tutti i servizi di Google Play - che è molto!

Si consiglia di sostituire quella linea con le specifiche dipendenze necessarie. È possibile trovare un elenco completo here. Ad esempio, se utilizzi Maps e Google Accedi, puoi specificare:

compile 'com.google.android.gms:play-services-auth:9.0.0' 
compile 'com.google.android.gms:play-services-maps:9.0.0' 
+2

Come hai suggerito, ho sostituito la dipendenza dai servizi di gioco con le sette specifiche dipendenze di cui l'app ha effettivamente bisogno. Questo cambiamento ha eliminato il blocco e molti dei messaggi di avviso relativi a Firebase nel logcat. Grazie per la risposta e il deposito del problema. –

+0

@IanBarber vuol dire che il 'classpath 'com.google.gms: google-services: 3.0.0'' sarebbe ancora incluso nel livello di progetto? –

+1

Sì, quello resta lì perché è un plugin per Gradle stesso piuttosto che la tua app. –