2013-09-03 7 views
10

Ich führe einige automatisierte Tests (mit Calabash-Android) auf einer Android-App, und ich muss programmatisch einen freien Cache der App auslösen, aber keine Benutzerdaten.Android: wie App-Cache löschen und Benutzerdaten über adb behalten?

Ich fand, dass die adb shell pm clear Lösung nicht ausreichend ist, da es Benutzerdaten löscht (die Anmeldedaten enthält).

Gibt es eine Möglichkeit, dies extern zur App zu erreichen (d. H. Ohne Code-Änderungen)?

Antwort

7

Ich habe die Erkundung der /data/data/<app's package> Ordner und fand einen cache innerhalb Ordner, der die Cache-Dateien für die App enthalten, die ich den Cache löschen wollte. Dann von adb shell löschte ich den Inhalt, und der Cache der App wurde zurückgesetzt.

Wahrscheinlich können Sie adb shell su -c "rm -rf /data/data/<app's package>/cache/*" führen Sie den Cache nur für die App zu löschen (die App möglicherweise einige benutzerdefinierte Caching haben, die davon betroffen ist nicht). Es hat für mich funktioniert.

bearbeiten: Natürlich Ihre adb des Geräts müssen eingerichtet werden Root-Zugriff haben (in Cyanogen, können Sie es aktivieren).

bearbeitet: @ running-Code-Basis in den Kommentaren darauf hingewiesen, dass, wenn Ihre Anwendung mit einem Debug-Schlüssel erstellt wird, können Sie auch run-as Befehl in adb Shell verwenden können. So würde es so aussehen: adb shell run-as <app's package> rm -rf /data/data/<app's package>/cache/* Diese Methode benötigt nicht erfordern root.

+1

Sie können ADB-Shell ausführen-als und löschen Sie Dateien ohne Root, wenn Sie die App mit einem Debug-Schlüssel erstellt. –

+1

Danke, ich habe es seit damals entdeckt, aber ich habe vergessen, diese Antwort zu aktualisieren. Ich füge bald hinzu. –