2013-09-03 25 views
10

Używam testów automatycznych (z kalabas-androidem) na Androida i muszę programowo uruchamiać pamięć podręczną aplikacji, ale nie dane użytkownika.Android: jak wyczyścić pamięć podręczną aplikacji i zachować dane użytkownika za pomocą adb?

Okazało się, że rozwiązanie adb shell pm clear nie jest odpowiednie, ponieważ usuwa dane użytkownika (w tym dane logowania).

Czy jest jakiś sposób osiągnięcia tego na zewnątrz aplikacji (bez zmian kodu)?

Odpowiedz

7

Przeglądałem folder /data/data/<app's package> i odnalazłem wewnątrz niego folder cache, zawierający pliki z pamięci podręcznej aplikacji, które chciałem wyczyścić z pamięci podręcznej. Następnie od adb shell usunąłem zawartość, a pamięć podręczna aplikacji została zresetowana.

Najprawdopodobniej można uruchomić adb shell su -c "rm -rf /data/data/<app's package>/cache/*", aby usunąć tylko pamięć podręczną (aplikacja może mieć niestandardowe buforowanie, na które nie ma wpływu). To zadziałało dla mnie.

Edit: Oczywiście, urządzenie jest adb należy skonfigurować, aby mieć dostęp korzeniowy (w cyjanu, można go włączyć).

Edit: @ docierania codebase zauważył w komentarzach, że jeśli aplikacja jest skompilowany z kluczem debugowania, można również użyć polecenia run-as skorupek ADB. Tak więc wyglądałoby to tak: adb shell run-as <app's package> rm -rf /data/data/<app's package>/cache/* Ta metoda wymaga , a nie wymaga root.

+1

Możesz uruchomić powłokę adb uruchamianą jako i usuwać pliki bez uprawnień roota, jeśli stworzyłeś aplikację z kluczem debugowania. –

+1

Dzięki, odkryłem to od tego czasu, ale zapomniałem zaktualizować tę odpowiedź. Dodam wkrótce. –