Android: come cancellare la cache app e mantenere i dati utente tramite adb?

Ho eseguito test automatici (con calabash-android) su un'applicazione Android e devo triggersre in modo programmato una chiara cache dell'app, ma non i dati degli utenti.

Ho scoperto che la soluzione adb shell pm clear non è sufficiente, poiché elimina i dati utente (che includono i dettagli di accesso).

  • Colbind android a due reti wireless contemporaneamente
  • Come implementare l'applicazione VOIP usando il pacchetto android.net.rtp
  • Popupwindow con image
  • Come trovare la fonte Intent in Android?
  • Come hide una scheda nel layout della scheda Android?
  • Modificare il numero di colonne con GridLayoutManager e RecyclerView
  • C'è un modo per get questo all'esterno all'app (ad esempio senza cambi di codice)?

  • Come fare riferimento ad un lambda da dentro?
  • Aggiungi icone + text a TabLayout
  • Sfondo Android con gradiente e image piastrellata
  • La linea punteggiata non è effettivamente punteggiata quando l'applicazione è in esecuzione su un dispositivo Android vero e proprio
  • Android TextView ha altezza e width di 0
  • Perché il paradigma di "Direct Database Connection" non è accolto da Android Platform?
  • One Solution collect form web for “Android: come cancellare la cache app e mantenere i dati utente tramite adb?”

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

    Probabilmente è ansible eseguire adb shell su -c "rm -rf /data/data/<app's package>/cache/*" per eliminare la cache solo per l'applicazione (l'applicazione potrebbe avere una cache personalizzata, che non è interessata da questo). Ha funzionato per me.

    Modifica : Naturalmente, l'adb del dispositivo deve essere impostato per avere accesso radice (in Cyanogen, è ansible abilitarlo).

    Modifica : @ codice-base di codice indicato nei commenti, che se l'applicazione viene compilata con una chiave di debug, è anche ansible utilizzare run-as command run-as nella shell di adb. Quindi sarebbe simile a questo: adb shell run-as <app's package> rm -rf /data/data/<app's package>/cache/* Questo metodo non richiede root.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.