2016-06-24 10 views
7

Nella mia app per Android, eseguo il debug con Instant Run abilitato.Android: l'app si arresta frequentemente durante l'esecuzione istantanea

L'app mi dà errori inaspettati molto frequentemente, che vengono risolti se ho fatto una compilazione pulita.

Per un esempio, a volte alcune classi non trovano eccezioni dove la classe è effettivamente presente. Inoltre, a volte ci sono eccezioni del cast di classe quando si tenta di trasmettere il restituito da findViewById() al tipo di destinazione (probabilmente Android Studio ha erroneamente interpretato gli ID degli elementi durante la distribuzione a caldo dei layout).

Tutti questi errori vengono risolti senza modifica del codice, semplicemente eseguendo una compilazione completa. L'esecuzione istantanea ha reso il processo di compilazione con successo due o tre volte più lento.

Perché ricevo questi errori? Qualcuno sa come ottenere una corsa immediata per funzionare correttamente?

+0

Ho avuto lo stesso problema, esegui una compilazione completa quando vuoi testarlo su un altro dispositivo, altro tuo emulatore o il dispositivo che stai utilizzando per testare. –

+0

Utilizzare codice di gestione delle eccezioni (try/catch blocks) appropriately.try/catch dei blocchi attorno al codice che può potenzialmente generare un'eccezione e utilizzare un blocco finally per ripulire le risorse, se necessario. – Developer

+0

Quindi, come possiamo sfruttare il funzionamento istantaneo @karanvs – Killer

risposta

5

Non sei l'unico. Instant Run è poco stabile, o possiamo dire inaffidabile, al momento.

L'esecuzione immediata ha diversi passaggi di scambio come this document describes. Nel tuo caso, Instant Run non è stato in grado di riconoscere bene le tue modifiche, quindi ha eseguito il warm swap anche se è stato necessario eseguire il cold swap e così via.

L'esecuzione istantanea è utile quando si modifica il posizionamento della GUI minore, voglio dire che è lo solo l'utile scenario attualmente, quindi ti consiglio di disattivarlo durante lo sviluppo generale. Puoi disabilitarlo deselezionando la casella di controllo Settings > Build, Execution, Deployment > Enable Instant Run to hot swap....

Se pensate che Instant Run sia di fantasia e voglia ancora usarlo, probabilmente vi troverete di fronte a un tale problema molte volte. Per questo, ricostruisci tutto quanto hai vissuto. Questo è tutto ciò che possiamo fare ora.

1

Si tratta di documento circa Run Immediata:

  1. Android Studio ora distribuisce pulito costruisce più velocemente che mai. Inoltre, l'invio di modifiche incrementali del codice all'emulatore o un dispositivo fisico è quasi istantaneo. Rivedi i tuoi aggiornamenti senza ridistribuire una nuova build di debug o, in molti casi, senza riavviare l'app.
  2. Run Immediata supporta spingendo le seguenti modifiche a un'applicazione in esecuzione:
    • Modifiche alla realizzazione di un metodo di istanza esistente o metodo statico
    • Modifiche a una risorsa un'applicazione esistente
    • modifiche al codice strutturale, come ad come firma di un metodo o campo statico (richiede un dispositivo di destinazione con livello di API 21 o superiore).

Quindi penso quando si aggiunge una nuova categoria o aggiungere nuovi view_id, è necessario pulire - ricostruire il vostro progetto. Questa è solo la mia opinione, correggimi se sbaglio. More info about Instant Run

3

L'esecuzione immediata è ancora piena di bug ora.Anche Google dice:

L'esecuzione istantanea è progettata per accelerare il processo di generazione e distribuzione nella maggior parte delle situazioni in . Tuttavia, alcuni aspetti dell'utilizzo di Instant Run potrebbero influire sul suo comportamento e sulla compatibilità con la tua app. Se verificano altri problemi durante l'utilizzo di Esegui istantanea, si prega di file a bug

Si aggiungono alcuni file DEX per la nostra applicazione per accelerare la costruzione e il processo di implementazione. A volte quando si modifica un layout, quindi crea ed esegue il progetto, mostrando ancora il vecchio layout. Anche l'apk prodotto da esso non funzionerà su alcuni dispositivi.

Per ora, meglio se ci rivolgiamo fuori:

Per disabilitare immediato Run:

  1. Aprire la finestra di dialogo Impostazioni o Preferenze.
  2. Passare a Build, Execution, Deployment> Instant Run.
  3. Deselezionare la casella accanto a Abilita esecuzione istantanea.
0

Se cambio il file AndroidManifest.xml, Android Studio esegue una generazione completa, ma questo è molto più veloce a pugno la pulizia, e poi costruire il progetto.

Quindi, aggiungo una riga vuota al file manifest, ogni volta che voglio che Android Studio completi il ​​progetto. Questo è molto efficace per eseguire una compilazione manuale completa.

Problemi correlati