2011-01-30 23 views
34

È stato appena rilasciato un aggiornamento agli strumenti di sviluppo Android che consente di salvare e ripristinare da un'istantanea dell'emulatore. Qualcuno sa come usare questa funzione? Ciò ridurrebbe notevolmente il tempo di caricamento dell'emulatore! Ma non riesco a trovare un modo per dire all'emulatore di farlo. Grazie.come si salva l'istantanea dell'emulatore Android?

risposta

2

Non so c'è alcuna opzione disponibile per il ripristino da.

Ma è possibile risparmiare corrente snapshot del proprio emulatore

Modifica della vista prospettica Java-DDMS. Cliccando sul pulsante circondato in rosso è possibile salvare una copia corrente snapshot del proprio emulatore

enter image description here

+0

Grazie per le informazioni aggiuntive Tanmay. Il pulsante cerchiato aiuta a fare uno screenshot :) e anche questo è utile. Quello che intendevo è "salvare/ripristinare" lo "stato" dell'emulatore. Una funzione lanciata proprio ieri. Provalo! – Gaurav

+0

Non ero a conoscenza dell'aggiornamento. Grazie per quello. –

+0

Funziona con l'SDK di Android 8? – hoffmanc

3

destro. Supponendo di aver selezionato "Abilita istantanea" durante la creazione di avd, la semplice chiusura dell'emulatore salva il suo stato e viene ripristinata alla prossima esecuzione, sia dal gestore che da eclissi.

29

Honeycomb ha introdotto questa funzione ed è davvero fantastico! È come la funzione di ibernazione su un laptop. Stai salvando lo stato dell'emulatore in un grande file e ripristinandone lo stato dal file in un secondo momento.

Ci sono un paio di modi per ottenerlo. Il primo modo è impostare le opzioni desiderate nella finestra di dialogo Opzioni di avvio quando si avvia l'emulatore da Android SDK e AVD Manager (vedere l'immagine sotto). L'opzione Pulisci dati utente è ancora lì da prima, e ciò creerà un nuovo sistema da zero. Le nuove opzioni di snapshot sono Avvia da snapshot (se ne è stato precedentemente salvato uno) o Salva su snapshot quando l'emulatore si arresta. Ovviamente è necessario salvare uno snapshot prima di poter essere avviato da uno. Il file dell'istantanea può diventare piuttosto grande e questo aumenta il tempo necessario all'emulatore per uscire quando lo si chiude. Ma ne vale la pena. L'avvio da un'istantanea è molto veloce, rispetto al passare attraverso l'intera sequenza di avvio di Android. Uno dei trucchi che potresti fare è Salva su snapshot una volta, quindi Avvia da snapshot ma non Salva su snapshot dopo quella prima volta. Le tue startup saranno veloci e le tue uscite saranno veloci. Tuttavia, partirai sempre dallo stesso stato di istantanea, indipendentemente da ciò che fai in ogni sessione dell'emulatore.

enter image description here

L'altro modo per utilizzare istantanee da linea di comando di emulatore. La documentazione attualmente non menziona queste opzioni, ma invocando l'opzione di aiuto su emulatore, troviamo questi: istantanee

-snapstorage <file>   file that contains all state snapshots (default <datadir>/snapshots.img) 
-no-snapstorage    do not mount a snapshot storage file (this disables all snapshot functionality) 
-snapshot <name>    name of snapshot within storage file for auto-start and auto-save (default 'default-boot') 
-no-snapshot     perform a full boot and do not do not auto-save, but qemu vmload and vmsave operate on snapstorage 
-no-snapshot-save    do not auto-save to snapshot on exit: abandon changed state 
-no-snapshot-load    do not auto-start from snapshot: perform a full boot 
-snapshot-list     show a list of available snapshots 
-no-snapshot-update-time  do not do try to correct snapshot time on restore 

Non ho provato dalla riga di comando in quanto la finestra di dialogo Opzioni di avvio è più facile. EDIT: Un'altra cosa, il file di snapshot viene memorizzato nella stessa posizione dei file AVD.

+4

una piccola aggiunta: le opzioni dell'istantanea verranno visualizzate in grigio a meno che durante la creazione dell'AVD non venga selezionato "Abilita istantanee". –

+3

È vero. Ma puoi modificare un AVD esistente per abilitare le istantanee. Quindi non c'è bisogno di tornare indietro e ricreare tutti quelli esistenti. –

+2

+1 per includere la * riga di comando * versione e il percorso di memorizzazione – n611x007

21

A quanto pare si può anche farlo tramite l'interfaccia della console:

$ telnet localhost 5554 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
Android Console: type 'help' for a list of commands 
OK 
avd snapshot save foo 
+0

'emulatore: ascolto delle connessioni della console sulla porta: 5554' ma ottenuto' Connessione a localhost ... Impossibile aprire la connessione all'host, sulla porta 5554: Connetti failed' –

+1

Per le persone a cui piace trovarlo nel 2017, questa funzione sembra essere assente negli strumenti v25. Per usarlo è necessario effettuare il downgrade a v24. – Ishamael

+0

Da quello che posso vedere (aprile 2017), questo sembra mancare in Tools v25 (l'errore dice che l'opzione non è supportata), tuttavia in Tools v26 potrebbe tornare (snapshot) non sicuro. Non ricevo errori/feedback, quindi non sono sicuro che ci sia o no. Potrebbe qualcuno che ha funzionato prima con qualsiasi altra versione, verificare su Strumenti v26. Grazie. –

1

Per gli utenti della shell, se si sta eseguendo un emulatore --no-window: Sembra che usando kill -2 per segnalare il processo di emulatore salverà il boot di default snapshot, assumendo che tu abbia creato l'emulatore con l'opzione --snapshot.

fare questo:

killall -2 emulator64-x86 

La prossima volta che si avvia che emulatore, lanciando con qualsiasi cosa ma l'opzione -no-snapshot-load ripristinerà da quella istantanea.

+0

'killall' può essere un approccio shotgun, ma questo funziona per gli emulatori x86_64. – Corin

+0

[Wikipedia] (http://en.wikipedia.org/wiki/Unix_signal) dice che il segnale 2 è SIGINT. Potresti anche essere in grado di inviare SIGINT inserendo 'fg', quindi premendo Ctrl + C. – unforgettableid