9

Ho scritto un'app per Android che ha funzionato fino ad ora. Poi ho aggiunto le funzionalità per Google Cloud Messaging (GCM). Ho utilizzato il progetto demo di Google che sembra aver aggiunto analisi e indicizzazione delle app, ecc.L'app per Android inizia lentamente - dex2oat Zip è assente. Annullato - Gradle 2.10

Ora l'avvio dell'applicazione funziona come previsto ma richiede molto tempo. Il registro mostra molti messaggi come questo:

I/dex2oat: ---------------------------------------------------- 
I/dex2oat: <SS>: S T A R T I N G . . . 
I/dex2oat: <SS>: Zip is absent. Canceled. 
I/dex2oat: /system/bin/dex2oat --runtime-arg -classpath --runtime-arg --instruction-set=arm --instruction-set-features=div --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --dex-file=/data/data/world.b2g.b2gether/files/instant-run/dex/slice-com.google.android.gms-play-services-measurement-8.4.0_d76b40d326ea93493481fa158b18846c1c4627dd-classes.dex --oat-fd=29 --art-fd=-1 --oat-location=/data/data/world.b2g.b2gether/cache/slice-com.google.android.gms-play-services-measurement-8.4.0_d76b40d326ea93493481fa158b18846c1c4627dd-classes.dex --runtime-arg -Xms64m --runtime-arg -Xmx512m 
I/dex2oat: dex2oat took 288.616ms (threads: 4) 
I/dex2oat: ---------------------------------------------------- 
I/dex2oat: <SS>: S T A R T I N G . . . 
I/dex2oat: <SS>: Zip is absent. Canceled. 
I/dex2oat: /system/bin/dex2oat --runtime-arg -classpath --runtime-arg --instruction-set=arm --instruction-set-features=div --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --dex-file=/data/data/world.b2g.b2gether/files/instant-run/dex/slice-com.google.android.gms-play-services-maps-8.4.0_36e4d7c4ee371ae72ff4fba4383d7535cc7f3d3a-classes.dex --oat-fd=29 --art-fd=-1 --oat-location=/data/data/world.b2g.b2gether/cache/slice-com.google.android.gms-play-services-maps-8.4.0_36e4d7c4ee371ae72ff4fba4383d7535cc7f3d3a-classes.dex --runtime-arg -Xms64m --runtime-arg -Xmx512m 
I/dex2oat: dex2oat took 321.095ms (threads: 4) 
I/dex2oat: ---------------------------------------------------- 
I/dex2oat: <SS>: S T A R T I N G . . . 
I/dex2oat: <SS>: Zip is absent. Canceled. 
I/dex2oat: /system/bin/dex2oat --runtime-arg -classpath --runtime-arg --instruction-set=arm --instruction-set-features=div --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --dex-file=/data/data/world.b2g.b2gether/files/instant-run/dex/slice-com.google.android.gms-play-services-location-8.4.0_298f1e5056d6eea423c13052ef0c9136963ce27b-classes.dex --oat-fd=29 --art-fd=-1 --oat-location=/data/data/world.b2g.b2gether/cache/slice-com.google.android.gms-play-services-location-8.4.0_298f1e5056d6eea423c13052ef0c9136963ce27b-classes.dex --runtime-arg -Xms64m --runtime-arg -Xmx512m 
I/dex2oat: dex2oat took 298.720ms (threads: 4) 
I/dex2oat: ---------------------------------------------------- 
... 

Sembra che alcuni pacchetti manchino. Dato che non ho bisogno di nessuna di queste funzionalità (eccetto mappe e GCM) ho disattivato le opzioni per Analytics, Autenticazione ... in Android Studio. Tuttavia, questi messaggi appaiono ancora.

Potrebbe essere perché applico i servizi nel file build.gradle?

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile files('libs/greendao-2.1.0.jar') 
    compile project(':volley') 
    compile 'com.android.support:support-v13:23.3.0' 
    compile 'com.android.support:recyclerview-v7:23.3.0' 
    compile 'com.android.support:appcompat-v7:23.3.0' 
    compile 'com.google.android.gms:play-services-gcm:8.4.0' 
    compile 'com.google.android.gms:play-services-maps:8.4.0' 
    compile 'com.google.android.gms:play-services-location:8.4.0' 
} 

apply plugin: 'com.google.gms.google-services' 

Nell'applicazione config Gradle Ho anche scritto

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.0.0' 
     classpath 'com.google.gms:google-services:2.0.0' 
    } 
} 

-------------------------- EDIT : --------------------------

Risulta sembra essere colpa di Gradle

ho tracciato il problema un po 'indietro al punto in cui ho aggiornato il nuovo Android Studio. A un certo punto ho dovuto passare da Gradle 2.8 a Gradle 2.10. Se lo cambio a Gradle 2.8 questo problema è sparito. Purtroppo Android Studio mi dice che devo aggiornare a 2,10 ora.

Quindi cosa posso fare?

----------------------- EDIT 07.June.2016: -------------- ---------

sembra che con il nuovo aggiornamento ad Android 2.1.2 Studio questo bug è stato risolto (o almeno io non vedo questo messaggio più)

+0

'compile 'com.google.android.gms: play-services: 8.4.0'' Non è quasi mai una buona idea includere l'intera libreria di servizi di gioco, perché lo fai? Inoltre, sembra che tu abbia già incluso le librerie parziali di cui hai bisogno –

+0

È stato incluso in questo modo nel progetto di esempio di Google. Potrei controllare di nuovo. Quindi dovrei rimuovere quello dal classpath e anche nelle dipendenze gradle? classpath 'com.google.gms: google-services: 2.0.0-beta6' –

+1

È necessario il riferimento nel classpath e nel 'plugin apply ', ma non è necessario il' compile' com.google.android. gms: play-services: 8.4.0'', anche perché hai modificato manualmente il file json generato? –

risposta

11

Infine Ho trovato la risposta. Il problema era davvero Gradle. Ma non la nuova versione stessa. Molto più la build di instand.

quello che ho imparato:

problema sembra essere che con il permesso Run Immediata non può essere trovato alcuni "fette" per i quadri. Ciò influisce anche sul telefono quando si esegue l'app in modo indipendente dal compilatore (ad esempio, se si avvia tramite App Drawer). Sembra che le librerie già compilate debbano essere cercate/collegate/compilate di nuovo. Il motivo per cui ciò accade solo con Gradle 2.10 o versioni successive non era la versione stessa, ma semplicemente che Gradle 2.8 non supportava la nuova funzione.

La soluzione:

Per ora il miglior lavoro intorno è stato quello di disattivare questa funcionality in:

Impostazioni/Costruire, Esecuzione, distribuzione/istantaneo Esegui -> Attiva Esegui istantaneo a codice hot swap

>> MODIFICA: Tuttavia, l'aggiornamento di Android Studio 2.1 non sembra risolvere il problema.

enter image description here

+0

L'esecuzione istantanea con GCM e PS ha reso anche i tempi di avvio delle mie app molto lenti. :/ –

+0

Forse potresti dare un'occhiata al log e vedere se hai gli stessi problemi con dex2oat come ho fatto io. Non lo troverai nella "domanda selezionata", quindi dai un'occhiata al filtro corretto. –

+0

No. Nel mio caso si blocca su una riga enorme che inizia come "I/InstantRun: percorso incrementale dex è/..." Nessuna linea di registro speciale nel sistema. –

-1

Ho anche eseguire in questo problema. La velocità di caricamento della mia app è troppo lenta. Ho controllato il logcat qui sotto. I/dex2oat: dex2oat ha preso 288.616 ms Dopo aver deselezionato la casella di opzione che lo scrittore ha menzionato il problema ha risolto.

Problemi correlati