Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: how to clear app cache and keep user data via adb?

Tags:

I'm running some automated tests (with calabash-android) on an Android app and I need to programatically trigger a clear of the app's cache, but not user data.

I found that the adb shell pm clear solution is not adequate, since it clears user data (which includes login details).

Is there any way to achieve this externally to the app (i.e. without code changes)?

like image 647
André Fernandes Avatar asked Sep 03 '13 10:09

André Fernandes


1 Answers

I've been exploring the /data/data/<app's package> folder, and found a cache folder inside, which contained the cached files for the app that I wanted to clear the cache of. Then from adb shell I deleted the contents, and the app's cache was reset.

Most probably you can run adb shell su -c "rm -rf /data/data/<app's package>/cache/*" to delete the cache only for the app (the app might have some custom caching, which isn't affected by this). It worked for me.

Edit: Of course, your device's adb must be set up to have root access (in Cyanogen, you can enable it).

Edit: @running-codebase pointed out in the comments, that if your application is compiled with a debug key, you can also use run-as command in adb's shell. So it would look like this: adb shell run-as <app's package> rm -rf /data/data/<app's package>/cache/* This method does not require root.

like image 190
Tamás Barta Avatar answered Sep 19 '22 11:09

Tamás Barta