2013-09-03 29 views
10

Sto eseguendo alcuni test automatici (con calabash-android) su un'app Android e ho bisogno di attivare in modo programmatico una cancellazione della cache dell'app, ma non dei dati dell'utente.Android: come cancellare la cache delle app e mantenere i dati degli utenti tramite adb?

Ho trovato che la soluzione adb shell pm clear non è adeguata, poiché cancella i dati dell'utente (che include i dettagli di accesso).

C'è un modo per ottenere questo esternamente all'app (cioè senza modifiche al codice)?

risposta

7

Ho esplorato la cartella /data/data/<app's package> e ho trovato una cartella cache all'interno, che conteneva i file memorizzati nella cache dell'app che volevo cancellare dalla cache. Quindi da adb shell ho eliminato il contenuto e la cache dell'app è stata ripristinata.

Molto probabilmente è possibile eseguire adb shell su -c "rm -rf /data/data/<app's package>/cache/*" per eliminare la cache di solo per l'applicazione (l'applicazione potrebbe avere qualche caching su misura, che non è interessato da questo). Ha funzionato per me.

Edit: Naturalmente, adb il dispositivo di deve essere impostato per avere accesso radice (in Cyanogen, è possibile abilitarlo).

Edit: @ rodaggio codebase sottolineato nei commenti, che se l'applicazione viene compilato con una chiave di debug, è anche possibile utilizzare il comando run-as in guscio di adb. Quindi dovrebbe essere il seguente: adb shell run-as <app's package> rm -rf /data/data/<app's package>/cache/* Questo metodo non richiede root.

+1

È possibile eseguire adb shell run-as ed eliminare file senza root se si è creata l'app con una chiave di debug. –

+1

Grazie, l'ho scoperto da allora, ma ho dimenticato di aggiornare questa risposta. Aggiungerò presto. –